C++ named requirements: TriviallyCopyable (since C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Note : la norme ne définit pas d'exigence nommée avec ce nom. Il s'agit d'une catégorie de type définie par le langage de base. Elle est incluse ici comme exigence nommée uniquement par souci de cohérence.
Table des matières |
Exigences
Les types suivants sont collectivement appelés trivially copyable types :
- types scalaires
- types de classes trivialement copiables
- tableaux de ces types
- versions qualifiées cv de ces types
Notes
En général, pour tout type trivialement copiable
T
et un objet
obj1
de
T
, les octets sous-jacents de
obj1
peuvent être copiés dans un tableau de
char
, ou
unsigned
char
, ou
std::byte
(depuis C++17)
ou dans
obj2
, un objet distinct de
T
. Ni
obj1
ni
obj2
ne doivent être un sous-objet potentiellement chevauchant.
Si les octets sous-jacents de
obj1
sont copiés dans un tel tableau, puis que le contenu résultant est recopié dans
obj1
,
obj1
conservera sa valeur originale. Si les octets sous-jacents de
obj1
sont copiés dans
obj2
,
obj2
contiendra la valeur de
obj1
.
Les octets sous-jacents peuvent être copiés par std::memcpy ou std::memmove , tant qu'aucun objet volatile actif n'est accédé.
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Applicable à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| CWG 1734 | C++11 | Les POD C++03 avec assignation non-triviale supprimée n'étaient pas triviaux | opérateurs/constructeurs supprimés autorisés |
| CWG 2094 | C++11 | Les types scalaires volatiles ne sont pas trivialement copiables ( CWG 1746 ) | rendus trivialement copiables |
Voir aussi
|
(C++11)
|
vérifie si un type est trivialement copiable
(modèle de classe) |