Namespaces
Variants

C++ named requirements: TriviallyCopyable (since C++11)

From cppreference.net
C++ named requirements

Hinweis: Der Standard definiert keine benannte Anforderung mit diesem Namen. Dies ist eine Typkategorie, die durch die Kernsprache definiert wird. Sie wird hier nur der Konsistenz halber als benannte Anforderung aufgeführt.

Inhaltsverzeichnis

Anforderungen

Die folgenden Typen werden zusammen als trivially copyable types bezeichnet:

Hinweise

Im Allgemeinen können für jeden trivial kopierbaren Typ T und ein Objekt obj1 vom Typ T die zugrundeliegenden Bytes von obj1 in ein Array von char , oder unsigned char , oder std::byte (seit C++17) oder in obj2 , ein separates Objekt vom Typ T , kopiert werden. Weder obj1 noch obj2 dürfen ein potenziell überlappendes Subobjekt sein.

Wenn die zugrundeliegenden Bytes von obj1 in ein solches Array kopiert werden und dann der resultierende Inhalt zurück in obj1 kopiert wird, behält obj1 seinen ursprünglichen Wert. Wenn die zugrundeliegenden Bytes von obj1 in obj2 kopiert werden, enthält obj2 den Wert von obj1 .

Die zugrundeliegenden Bytes können durch std::memcpy oder std::memmove kopiert werden, solange kein lebendes volatile-Objekt zugegriffen wird.

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
CWG 1734 C++11 C++03 POD mit gelöschter nicht-trivialer Zuweisung war nicht trivial gelöschte Konstruktoren/Operatoren erlaubt
CWG 2094 C++11 Volatile Skalartypen sind nicht trivial kopierbar ( CWG 1746 ) als trivial kopierbar festgelegt

Siehe auch

prüft, ob ein Typ trivial kopierbar ist
(Klassen-Template)