C++ named requirements: TriviallyCopyable (since C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Nota: el estándar no define un requisito nombrado con este nombre. Esta es una categoría de tipo definida por el lenguaje central. Se incluye aquí como un requisito nombrado únicamente por consistencia.
Contenidos |
Requisitos
Los siguientes tipos se denominan colectivamente trivially copyable types :
- tipos escalares
- tipos de clase trivialmente copiables
- arreglos de dichos tipos
- versiones calificadas cv de estos tipos
Notas
En general, para cualquier tipo trivialmente copiable
T
y un objeto
obj1
de
T
, los bytes subyacentes de
obj1
pueden copiarse en un arreglo de
char
, o
unsigned
char
, o
std::byte
(desde C++17)
o en
obj2
, un objeto distinto de
T
. Ni
obj1
ni
obj2
pueden ser un subobjeto potencialmente superpuesto.
Si los bytes subyacentes de
obj1
se copian en dicha matriz, y luego el contenido resultante se copia de vuelta en
obj1
,
obj1
mantendrá su valor original. Si los bytes subyacentes de
obj1
se copian en
obj2
,
obj2
contendrá el valor de
obj1
.
Los bytes subyacentes pueden copiarse mediante std::memcpy o std::memmove , siempre que no se acceda a ningún objeto volátil activo.
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| CWG 1734 | C++11 | POD de C++03 con asignación no trivial eliminada no era trivial | se permiten ctors/operadores eliminados |
| CWG 2094 | C++11 | Los tipos escalares volátiles no son trivialmente copiables ( CWG 1746 ) | hechos trivialmente copiables |
Véase también
|
(C++11)
|
verifica si un tipo es trivialmente copiable
(plantilla de clase) |