Heim >Backend-Entwicklung >C++ >Können Vorlagenparameter in C 20 Consteval-Funktionen von Funktionsargumenten abhängen?

Können Vorlagenparameter in C 20 Consteval-Funktionen von Funktionsargumenten abhängen?

DDD
DDDOriginal
2024-10-23 20:37:30256Durchsuche

Can Template Parameters Depend on Function Arguments in C  20 Consteval Functions?

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!

Stellungnahme:
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