Kann eine constexpr-Funktion ein Label enthalten?
Nov 16 2020
Dieses Programm :
constexpr void f() { x: ; }
wird von gcc kompiliert, aber clang sagt:
error: statement not allowed in constexpr function
Ist dieser Code also gültig?
Antworten
7 cigien Nov 16 2020 at 11:35
Wie in einem Kommentar von Nathan Pierson ausgeführt , ist Clang korrekt und der Code ist schlecht geformt. Gemäß dem aktuellen Arbeitsentwurf (der C ++ 20 enthält) sagt dcl.constexpr # 3 :
Die Definition einer constexpr-Funktion muss die folgenden Anforderungen erfüllen:
...
sein Funktionskörper darf nicht einschließen
...
ein Kennzeichnungsetikett,
...
...