Namespaces
Variants

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

From cppreference.net
C++ named requirements

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 :

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

verifica si un tipo es trivialmente copiable
(plantilla de clase)