__has_trivial_copy_constructor
Remonter à Fonctions trait de type (C++11) - Index
Catégorie
Fonctions trait de type
Syntaxe
bool __has_trivial_copy_constructor ( typename T )
Renvoie true si et seulement si T a un constructeur par défaut trivial.
Erreur si T est un type incomplet.
False (mais bien formé) si un type classe n'a pas de constructeur par défaut
La définition (de la section 20.4.4.3 du "Working Draft notes") a un type T ayant un constructeur de copie trivial s'il est dans la liste :
- un type scalaire (ou array thereof)
- un type référence (ou array thereof)
- un tableau de type classe avec un destructeur trivial
- un type classe avec un constructeur de copie trivial (12.8)
Selon la section 12.8 p6 du "Working Draft" :
Un constructeur de copie pour la classe X est trivial si :
- il n'est pas fourni par l'utilisateur (voir la section 8.4)
- la classe X n'a pas de fonctions virtuelles
- la classe X n'a pas de classes de base virtuelles
- chaque classe de base directe de X a un constructeur de copie trivial
- pour tous les membres de données non-statiques de X qui sont de type classe (ou array thereof), chaque type classe a un constructeur de copie trivial.
Un constructeur de copie n'est pas fourni par l'utilisateur s'il est implicitement déclaré, ou défini inline comme = default;.
Interaction Ox false si le constructeur par défaut est défini comme supprimé.
Interaction Ox avec les définitions de fonction par défaut.