Namespaces
Variants

std:: copy_constructible

From cppreference.net
Definido en el encabezado <concepts>
template < class T >

concept copy_constructible =
std:: move_constructible < T > &&
std:: constructible_from < T, T & > && std:: convertible_to < T & , T > &&
std:: constructible_from < T, const T & > && std:: convertible_to < const T & , T > &&

std:: constructible_from < T, const T > && std:: convertible_to < const T, T > ;
(desde C++20)

El concepto copy_constructible se satisface si T es un tipo de referencia lvalue, o si es un move_constructible tipo objeto donde un objeto de ese tipo puede construirse a partir de un lvalue (posiblemente const) o const rvalue de ese tipo en contextos de inicialización directa y copia con la semántica habitual (se construye una copia manteniendo la fuente sin cambios).

Requisitos semánticos

Si T es un tipo de objeto, entonces copy_constructible<T> se modela solo si dado

  • v , un lvalue de tipo (posiblemente const ) T o un rvalue de tipo const T ,

lo siguiente es cierto:

  • Después de la definición T u = v ; , u es igual a v y v no se modifica;
  • T ( v ) es igual a v y no modifica v .

Referencias

  • Estándar C++23 (ISO/IEC 14882:2024):
  • 18.4.14 Concepto copy_constructible [concept.copyconstructible]
  • Estándar C++20 (ISO/IEC 14882:2020):
  • 18.4.14 Concepto copy_constructible [concept.copyconstructible]

Véase también

verifica si un tipo tiene un constructor de copia
(plantilla de clase)