Ich habe diese sehr einfache Funktion, die nicht kompilieren wird.conexpr Void-Funktion abgelehnt
constexpr void func()
{
}
Der Fehler Ich erhalte ist:
error: invalid return type 'void
' ofconstexpr
function 'constexpr void func()
'constexpr void func()
In C 14 ++ ist void
ein wörtlicher Typ [§3.9/10]:
Ein Typ a wörtlicher Typ wenn es ist:
- void; oder
- ein skalarer Typ; oder
- ein Referenztyp; oder
- ein Array von Literaltyp; oder
- ein Klassentyp (Ziffer 9), die alle der folgenden Eigenschaften hat:
- es hat eine triviale destructor,
- es ist ein Aggregat-Typ (8.5.1) oder mindestens ein
constexpr
Konstruktor oder Konstruktorvorlage, die kein Kopier- oder Verschiebekonstruktor ist, und- alle nicht statischen Datenelemente und Basisklassen sind nicht flüchtige Literaltypen.
Kann jemand erklären, warum diese ungültig ist?
möglich Duplikat (http [Void als wörtliche Typ?]: // Stackoverflow .com/questions/27486581/void-as-a-literal-type) –
Das Zitieren eines Arbeitsentwurfs nach C++ 14 ist nicht sehr nützlich, um Fakten zu C++ 14 nachzuweisen. –