__has_trivial_copy_constructor

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Typ-Trait-Funktionen (C++0x) - Index


Kategorie

Typ-Trait-Funktionen

Syntax

bool __has_trivial_copy_constructor ( typename T )

Gibt true zurück, wenn und nur wenn T ein trivialer Standardkonstruktor ist.

Fehler, wenn T ein unvollständiger Typ ist.

False (aber wohlgeformt), wenn ein Klassentyp keinen Standardkonstruktor hat.

Die Definition (aus Abschnitt 20.4.4.3 des Working Draft) gibt an, dass ein Typ T einen trivialen Kopierkonstruktor hat, wenn er sich in der folgenden Liste befindet:

  • ein skalarer Typ (oder ein Array davon)
  • ein Referenztyp (oder ein Array davon)
  • ein Klassentyp-Array mit trivialem Destruktor
  • ein Klassentyp mit einem trivialen Kopierkonstruktor (12.8)

Gemäß dem Abschnitt 12.8 S. 6 des Working Draft:

Ein Kopierkonstruktor für eine Klasse X ist trivial, wenn:

  • er nicht vom Benutzer bereitgestellt wurde (siehe Abschnitt 8.4)
  • die Klasse X keine virtuellen Funktionen hat
  • die Klasse X keine virtuellen Basisklassen hat
  • jede direkte Basisklasse von X einen trivialen Kopierkonstruktor hat
  • jeder Klassentyp einen trivialen Kopierkonstruktor für alle nicht-statischen Daten-Member von X hat, die Klassentypen (oder ein Array davon) sind.

Ein Kopierkonstruktor ist nicht vom Benutzer bereitgestellt, wenn er implizit deklariert oder inline als = default; definiert wurde.

Ox-Interaktion false, wenn der Standardkonstruktor als gelöscht definiert ist.

Ox-Interaktion mit Standardfunktionsdefinitionen.

Siehe auch