Funktionsparameter einer constexpr-Funktion können nicht in einem konstanten Ausdruck verwendet werden
Der bereitgestellte Codeausschnitt zeigt eine constexpr-Funktion make_const und eine Funktion t1, der versucht, make_const mit einem nicht konstanten Ausdruck zu verwenden. Dies löst einen Fehler aus, da i in t1 kein konstanter Ausdruck ist.
Eine constexpr-Funktion kann bei Angabe konstanter Argumente zur Kompilierungszeit ausgewertet werden. Wenn jedoch ein Nicht-constexpr-Parameter an eine constexpr-Funktion übergeben wird, wird dieser Parameter nicht zu einem konstanten Ausdruck.
Im Code unten ist t1 eine constexpr-Funktion, make_const(i) in t1 jedoch schon kein konstanter Ausdruck, da i keine Konstante ist:
constexpr int t1(const int i) { return make_const(i); }
Der aktualisierte Code zeigt, dass t1 als constexpr deklariert werden kann und das zurückgibt Ergebnis von make_const:
constexpr int t1(const int i) { return make_const(i); }
Der folgende Code führt jedoch immer noch zu einem Fehler, da do_something
template<int i> constexpr bool do_something(){ return i; } constexpr int t1(const int i) { return do_something<make_const(i)>(); }
Zusammenfassend lässt sich sagen, dass ein constexpr-Funktionsparameter ein konstanter Ausdruck sein muss. Wenn ein nicht konstanter Parameter übergeben wird, wird er innerhalb der constexpr-Funktion nicht zu einem konstanten Ausdruck.
Das obige ist der detaillierte Inhalt vonWarum kann ich einen Funktionsparameter in einer „constexpr'-Funktion nicht als konstanten Ausdruck verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!