Namensräume
Varianten
Aktionen

C++ benannte Anforderungen: DefaultConstructible

Von cppreference.com
 
 
C++ benannte Anforderungen
 

Gibt an, dass eine Instanz des Typs default-konstruiert werden kann.

Inhalt

[bearbeiten] Anforderungen

Der Typ T erfüllt 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-initialisiert.
T u{}; Das Objekt u wird wert-initialisiert oder aggregat-initialisiert.
T()

T{}

Ein temporäres Objekt vom Typ T wird wert-initialisiert oder aggregat-initialisiert.

[bearbeiten] Hinweise

Für Objekte von nicht-aggregaten Klassentypen muss ein öffentlicher Default-Konstruktor definiert sein (entweder benutzerdefiniert oder implizit definiert), um DefaultConstructible zu erfüllen.

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

Konstante Nicht-Klassen-Typen sind nicht DefaultConstructible.

Konstante Aggregat-Typen sind nicht DefaultConstructible, wenn eines ihrer Elemente ein Objekt eines Nicht-Klassen-Typs ist.

Nicht-Objekttypen (Funktionstypen, Referenztypen und der (möglicherweise cv-qualifizierte) Typ void) sowie die konstanten Nicht-Objekttypen sind niemals DefaultConstructible.

[bearbeiten] Defect reports

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

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 724 C++98 die Anforderungen an DefaultConstructible fehlten hinzugefügt
LWG 2170 C++98 das Initialisieren eines Objekts eines DefaultConstructible Typs mit einem
leeren Initialisierer konnte nur zu einer Wertinitialisierung führen
kann auch zu
Aggregatinitialisierung

[bearbeiten] Siehe auch

prüft, ob ein Typ einen Standardkonstruktor hat
(Klassenvorlage) [bearbeiten]
gibt an, dass ein Objekt eines Typs standardkonstruiert werden kann
(Konzept) [bearbeiten]