Heim > Backend-Entwicklung > C++ > Können constexpr-Funktionen die Berechnung der Zeichenfolgenlänge zur Kompilierungszeit garantieren?

Können constexpr-Funktionen die Berechnung der Zeichenfolgenlänge zur Kompilierungszeit garantieren?

DDD
Freigeben: 2024-11-02 22:06:30
Original
264 Leute haben es durchsucht

Can constexpr Functions Guarantee Compile-Time String Length Computation?

Berechnung der Zeichenfolgenlänge zur Kompilierungszeit: Ist es wirklich constexpr?

Bei einem Versuch, die Zeichenfolgenlänge zur Kompilierungszeit zu berechnen, wurde ein Teil von Code verwendet dazu eine rekursive Funktion (Länge). Es stellen sich jedoch Fragen hinsichtlich der garantierten Auswertung dieser Funktion zur Kompilierungszeit.

Der Standard schreibt nicht ausdrücklich vor, dass constexpr-Funktionen zur Kompilierungszeit ausgewertet werden. Dennoch deutet ein nicht normativer Hinweis im Entwurf des C-Standards, Abschnitt 5.19, darauf hin, dass konstante Ausdrücke während der Übersetzung einer Auswertung unterzogen werden können.

Um die Auswertung zur Kompilierungszeit sicherzustellen, kann man das Ergebnis einer constexpr-Variablen zuweisen. Wie von Bjarne Stroustrup erklärt:

"Zusätzlich zur Möglichkeit, Ausdrücke zur Kompilierungszeit auszuwerten, möchten wir auch verlangen können, dass Ausdrücke zur Kompilierungszeit ausgewertet werden; constexpr vor einer Variablendefinition tut dies ( und impliziert const). Es ist ein konstanter Ausdruck erforderlich, beispielsweise in einer Array-Grenze.

Initialisierung einer constexpr-Variablen mit dem Ergebnis der Funktion.

<code class="cpp">constexpr int len1 = length("abcd");</code>
Nach dem Login kopieren

Daher ist die bloße Deklaration einer constexpr-Funktion keine Garantie Dies wird durch die Auswertung zur Kompilierungszeit, die Zuweisung des Ergebnisses zu einer constexpr-Variablen oder die Verwendung in einem geeigneten Kontext sichergestellt.

Das obige ist der detaillierte Inhalt vonKönnen constexpr-Funktionen die Berechnung der Zeichenfolgenlänge zur Kompilierungszeit garantieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage