Lambda-Funktionen und Constexpr
Frage: Ist es möglich, constexpr mit Lambda-Funktionen in C zu verwenden?
Im folgenden Codebeispiel meldet der Compiler einen Fehler im Zusammenhang mit der Anforderung einer constexpr-Funktion:
<code class="cpp">struct Test { static const int value = []() -> int { return 0; } (); };</code>
Antwort:
Update ( C 17):Ab C 17 sind Lambda-Funktionen in konstanten Ausdrücken erlaubt.
Vor C 17:Lambdas sind derzeit in C 14 nicht in konstanten Ausdrücken erlaubt. Allerdings Es wurde ein Vorschlag (N4487) gemacht, der die Anzeige bestimmter Lambda-Ausdrücke und Abschlussobjekte in konstanten Ausdrücken zulässt.
Wenn dieser Vorschlag angenommen wird, würde er die folgenden Änderungen einführen:
Diese Änderung würde sich an dem Verhalten implizit definierter Konstruktoren und Zuweisungsoperatorfunktionen orientieren, die gegebenenfalls als constexpr abgeleitet werden können.
Das obige ist der detaillierte Inhalt vonKönnen Lambda-Funktionen mit „constexpr' in C verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!