Heim > Backend-Entwicklung > C++ > Hauptteil

Können Consteval-Funktionen die Abhängigkeit von Vorlagenparametern von Funktionsargumenten in C 20 ermöglichen?

Linda Hamilton
Freigeben: 2024-10-23 16:43:02
Original
477 Leute haben es durchsucht

Can Consteval Functions Enable Template Parameter Dependence on Function Arguments in C  20?

Consteval-Funktionen und Abhängigkeit von Vorlagenparametern von Funktionsargumenten

In C 17 wird eine Funktion verwendet, die eine Konstante direkt innerhalb einer Vorlagenparameterdeklaration zurückgibt ist aufgrund von Einschränkungen bei der Laufzeitausführung verboten. Mit der Einführung von Consteval-Funktionen in C 20 werden diese Einschränkungen voraussichtlich beseitigt. Wird dadurch jedoch eine erfolgreiche Kompilierung des folgenden Codes ermöglicht?

<code class="cpp">consteval int foo(int i) {
    return std::integral_constant<int, i>::value;
}</code>
Nach dem Login kopieren

Nein.

Trotz der Anforderung der Consteval-Funktion an die Kompilierungszeitauswertung gilt nur die Funktionsdefinition selbst wird einmal eingegeben. Daher werden Funktionsparameter aufgrund der Möglichkeit von Typisierungsdiskrepanzen niemals als zentrale konstante Ausdrücke behandelt.

Diese Einschränkung wird im C 20-Vorschlag weiter betont, der in seinem Beispiel Parameter ausdrücklich von der Betrachtung als konstante Ausdrücke ausschließt :

<code class="cpp">consteval int sqrsqr(int n) {
  return sqr(sqr(n)); // Not a constant-expression at this point,
}                     // but that's okay.</code>
Nach dem Login kopieren

Daher erlauben Konstruktionsfunktionen nicht, dass Vorlagenparameter von Funktionsargumenten abhängen, da den Parametern die notwendigen Typisierungsgarantien als konstante Ausdrücke fehlen.

Das obige ist der detaillierte Inhalt vonKönnen Consteval-Funktionen die Abhängigkeit von Vorlagenparametern von Funktionsargumenten in C 20 ermöglichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!