Namespaces
Variants

C++ named requirements: DefaultConstructible

From cppreference.net
C++ named requirements

Gibt an, dass eine Instanz des Typs standardmäßig konstruiert werden kann.

Inhaltsverzeichnis

Anforderungen

Der Typ T erfüllt die Anforderungen von DefaultConstructible wenn alle folgenden Aussagen und Ausdrücke gültig sind und ihre spezifizierten Effekte haben:

Ausdruck/Anweisung Nachbedingung
T u ; Das Objekt u wird default-initialized .
T u { } ; Das Objekt u wird value-initialized oder aggregate-initialized .
T ( )

T { }

Ein temporäres Objekt vom Typ T wird value-initialized oder aggregate-initialized .

Hinweise

Für Objekte von Nicht-Aggregat-Klassentyp muss ein öffentlicher default constructor definiert sein (entweder benutzerdefiniert oder implizit definiert), um DefaultConstructible zu erfüllen.

Nicht-konstante Objekte von Nicht-Klassen-Objekttypen sind immer DefaultConstructible .

Konstante Nicht-Klassentypen sind nicht DefaultConstructible .

Konstante Aggregattypen sind nicht DefaultConstructible , wenn eines ihrer Mitglieder ein Objekt eines Nicht-Klassentyps ist.

Nicht-Objekt-Typen (Funktionstypen, Referenztypen und der (möglicherweise cv-qualifizierte) Typ void ) sowie konstante Nicht-Objekt-Typen sind niemals DefaultConstructible .

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 724 C++98 die Anforderungen von DefaultConstructible fehlten hinzugefügt
LWG 2170 C++98 die Initialisierung eines Objekts eines DefaultConstructible Typs mit einem
leeren Initialisierer konnte nur zur Wertinitialisierung führen
kann auch zu
Aggregatinitialisierung führen

Siehe auch

prüft, ob ein Typ einen Standardkonstruktor besitzt
(Klassen-Template)
spezifiziert, dass ein Objekt eines Typs standardkonstruiert werden kann
(Konzept)