__has_trivial_default_constructor

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Fonctions trait de type (C++0x) - Index


Catégorie

Fonctions trait de type

Syntaxe

bool __has_trivial_default_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 de classe n'a pas de constructeur par défaut.

Selon la définition de la section 20.4.4.3 du "Working Draft notes", un type T a un opérateur d'affectation de copie trivial s'il est dans la liste :

  • un type scalaire (ou array thereof)
  • un tableau de type classe avec un constructeur trivial par défaut
  • un type classe avec un constructeur trivial par défaut

False en particulier pour les types référence.

Selon la section 21.1 p5 du "Working Draft", un constructeur par défaut est trivial si :

  • il n'est pas fourni par l'utilisateur
  • Sa classe n'a pas de fonctions virtuelles
  • Sa classe n'a pas de classes de base virtuelles
  • Chaque classe de base directe de X a un opérateur d'affectation de copie trivial.
  • Toutes les classes de base directes de sa classe ont un constructeur par défaut trivial.
  • Pour tous les membres de données non-statiques de sa classe qui sont de type classe (ou array thereof), chaque classe a un constructeur par défaut trivial.

Un constructeur par défaut n'est pas fourni par l'utilisateur s'il est implicitement déclaré, ou défini inline comme = default;.

Interaction Ox si l'opérateur d'affectation de copie est défini comme supprimé.

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.

Voir aussi