Namespaces
Variants

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

From cppreference.net
C++ named requirements

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 :

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

vérifie si un type est trivialement copiable
(modèle de classe)