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,

...

...