__is_standard_layout

Aus RAD Studio
Wechseln zu: Navigation, Suche

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


Kategorie

Typ-Trait-Funktionen

Syntax

bool __is_standard_layout(typename T)

Gibt true zurück, wenn und nur wenn T ein Standard-Layout-Typ ist.

Fehler, wenn T ein unvollständiger Typ ist.

Standard-Layout-Klassen werden im Abschnitt 9, p 6 des Working Draft beschrieben.

Ein Standard-Layout-Typ ist:

  • ein skalarer Typ
  • ein Array mit Standard-Layout-Typen
  • ein Standard-Layout-Klassentyp:

Eine Standard-Layout-Klasse ist eine Klasse, die:

  • keine nicht-statischen Daten-Member außer Standard-Layout-Typen hat
  • dieselbe Zugriffssteuerung für alle nicht-statischen Daten-Member (z.B. alle public oder private) hat
  • keine Basisklassen außer Standard-Layout-Klassen hat
  • keine virtuellen Funktionen und keine virtuellen Basisklassen hat
  • nur eine Klasse mit nicht-statischen Daten in dem DAG der Vererbungshierarchie hat
  • keine Basisklasse desselben Typs als ersten nicht-statischen Daten-Member hat

Auf Standard-Layout-Typen beziehen sich mehrere spezielle Klauseln im Standard, die sich auf die Codeerzeugung und -optimierung, oder einfach darauf auswirken können, ob bestimmte Konstrukte undefiniert sind. Insbesondere erfordern Standard-Layout-Klassen die leere Basisoptimierung.

Beachten Sie bitte, dass Standard-Layout-Typen eine Generalisierung von PODs im 2003-Standard sind, falls die POD/Standard-Layout-Überarbeitung noch nicht ausgeführt wurde, wenn diese Typfunktion eingeführt wird.

Siehe auch