Consteval-Funktionen und Template-Parameter abhängig von Funktionsargumenten
In C 17 kann ein Template-Parameter nicht von einem Funktionsargument abhängen, da der Compiler immer noch muss Laufzeitanweisungen für Nicht-constexpr-Funktionen generieren, auch wenn diese zur Kompilierungszeit ausgewertet werden.
C 20 Consteval-Funktionen
C 20 führt Consteval-Funktionen ein, die muss zur Kompilierzeit ausgewertet werden, wodurch die Laufzeitbeschränkung beseitigt wird. Es bleibt jedoch die Frage: Bedeutet dies, dass Vorlagenparameter jetzt von Funktionsargumenten abhängen können?
Keine Toleranzen für abhängige Vorlagenparameter
Trotz der Einführung von Konstruktionsfunktionen ist die Die Antwort ist nein. Das Papier erkennt an, dass Parameter nicht als Kernkonstantenausdrücke behandelt werden sollen. Dies ist auf mögliche Schreibunstimmigkeiten zurückzuführen, wie das Beispiel im Artikel zeigt:
consteval int sqrsqr(int n) { return sqr(sqr(n)); // Not a constant-expression at this point, } // but that's okay.
Daher werden Funktionsparameter niemals als konstante Ausdrücke betrachtet, wodurch verhindert wird, dass Vorlagenparameter von ihnen abhängig sind.
Das obige ist der detaillierte Inhalt vonKönnen Vorlagenparameter in C 20 Consteval-Funktionen von Funktionsargumenten abhängen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!