Heim > Backend-Entwicklung > C++ > Entspricht die erweiterte Behandlung von Nicht-constexpr-Standardbibliotheksfunktionen in Constexpr-Kontexten durch GCC dem C-Standard?

Entspricht die erweiterte Behandlung von Nicht-constexpr-Standardbibliotheksfunktionen in Constexpr-Kontexten durch GCC dem C-Standard?

Mary-Kate Olsen
Freigeben: 2024-11-28 21:33:14
Original
884 Leute haben es durchsucht

Is GCC's Extensional Treatment of Non-constexpr Standard Library Functions in Constexpr Contexts Conforming to the C   Standard?

Ist die Erweiterungsbehandlung von nicht-constexpr-Bibliotheksfunktionen konform?

Die Fähigkeit von GCC, nicht-constexpr-Standardbibliotheksfunktionen als constexpr in zu behandeln Bestimmte Situationen werfen Fragen zur Konformität auf.

Widerspruch in Standards

Im Entwurf des C 11-Standards schien es, dass die Behandlung integrierter Funktionen als constexpr ausdrücklich erlaubt wäre. Allerdings verschob sich der Konsens in C 12 und der Vorschlag änderte sich, was dazu führte, dass C 14 dieses Verhalten ausdrücklich verbot.

Als-Ob-Regel

In C 11 ist es Es war unklar, ob die Als-ob-Regel dieses Verhalten zuließ. Einige Meinungen deuteten darauf hin, dass dies der Fall sein könnte, aber diese Interpretation wird in der Lösung der LWG-Ausgabe 2013, die sich mit diesem speziellen Thema befasst, nicht bestätigt.

GCC-Implementierung

GCC implementiert Dieses Verhalten basiert auf dem früheren Beschlussvorschlag der LWG 2013, der eine implizite Behandlung als constexpr-Funktionen ermöglichte. Allerdings hat sich die endgültige Auflösung geändert, und diese Erweiterung ist jetzt nicht konform mit C 14.

Konformität im strengen Modus

Zur Konformität mit dem C 14-Standard, GCC sollte bei Auftreten eine Warnung im strikten Konformitätsmodus (-std=c 11 -pedantic oder -std=c 14 -pedantic) ausgeben Nicht-constexpr-Bibliotheksfunktionen, die in constexpr-Kontexten verwendet werden. Alternativ sollte dieses Verhalten in diesen Modi deaktiviert werden.

Intrinsics-Ausnahme

Compiler-Intrinsics werden vom Standard nicht abgedeckt und können daher unterschiedlich behandelt werden. Es ist wahrscheinlich, dass die Verwendung von Compiler-Intrinsics in Constexpr-Kontexten weiterhin akzeptabel ist.

Das obige ist der detaillierte Inhalt vonEntspricht die erweiterte Behandlung von Nicht-constexpr-Standardbibliotheksfunktionen in Constexpr-Kontexten durch GCC dem C-Standard?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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