C++ benannte Anforderungen: DefaultConstructible
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) | |
| (C++20) |
gibt an, dass ein Objekt eines Typs standardkonstruiert werden kann (Konzept) |