Namespaces
Variants

C++ named requirements: DefaultConstructible

From cppreference.net
C++ named requirements

Spécifie qu'une instance du type peut être construite par défaut.

Table des matières

Exigences

Le type T satisfait DefaultConstructible si toutes les déclarations et expressions suivantes sont valides et ont leurs effets spécifiés :

Expression/Instruction Postcondition
T u ; L'objet u est initialisé par défaut .
T u { } ; L'objet u est initialisé par valeur ou initialisé agrégat .
T ( )

T { }

Un objet temporaire de type T est initialisé par valeur ou initialisé agrégat .

Notes

Pour les objets de type classe non-agrégat, un constructeur par défaut public doit être défini (soit défini par l'utilisateur, soit implicitement défini) pour satisfaire DefaultConstructible .

Les objets non constants de type objet non-classe sont toujours DefaultConstructible .

Les types non-classes constants ne sont pas DefaultConstructible .

Les types agrégés constants ne sont pas DefaultConstructible si l'un de leurs membres est un objet de type non-classe.

Les types non-objets (types de fonctions, types de références, et le type void (éventuellement qualifié cv)) ainsi que les types const non-objets ne sont jamais DefaultConstructible .

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR S'applique à Comportement publié Comportement corrigé
LWG 724 C++98 les exigences de DefaultConstructible étaient manquantes ajoutées
LWG 2170 C++98 l'initialisation d'un objet d'un type DefaultConstructible avec un
initialiseur vide ne pouvait résulter qu'en une initialisation par valeur
peut également conduire à
une initialisation agrégée

Voir aussi

vérifie si un type a un constructeur par défaut
(modèle de classe)
spécifie qu'un objet d'un type peut être construit par défaut
(concept)