Namensräume
Varianten
Aktionen

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

Von cppreference.com
 
 
C++ benannte Anforderungen
 

Hinweis: Der Standard definiert keine benannte Anforderung mit diesem Namen. Dies ist eine von der Kernsprache definierte Typkategorie. Sie ist hier nur der Konsistenz halber als benannte Anforderung enthalten.

Inhalt

[bearbeiten] Anforderungen

Die folgenden Typen werden zusammen als trivially copyable Typen bezeichnet

[bearbeiten] Hinweise

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

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

Die zugrunde liegenden Bytes können mit std::memcpy oder std::memmove kopiert werden, solange kein lebendes volatile Objekt zugegriffen wird.

[bearbeiten] Defect reports

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

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes 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 skalare Typen sind nicht trivially copyable (CWG 1746) wurde trivially copyable gemacht

[bearbeiten] Siehe auch

prüft, ob ein Typ trivial kopierbar ist
(Klassenvorlage) [bearbeiten]