Namespaces
Variants

std:: move_constructible

From cppreference.net
Definido en el encabezado <concepts>
template < class T >
concept move_constructible = std:: constructible_from < T, T > && std:: convertible_to < T, T > ;
(desde C++20)

El concepto move_constructible se satisface si T es un tipo de referencia, o si es un tipo de objeto donde un objeto de ese tipo puede construirse a partir de un valor R de ese tipo en contextos de inicialización directa y copia, con la semántica habitual.

Requisitos semánticos

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

  • rv , un valor r de tipo T , y
  • u2 , un objeto distinto de tipo T igual a rv ,

lo siguiente es cierto:

  • Después de la definición T u = rv ; , u es igual a u2 ;
  • T(rv) es igual a u2 ; y
  • Si T no está calificado como const, entonces el estado resultante de rv (después de que la definición/expresión se evalúe en cualquiera de los puntos anteriores) es válido pero no especificado; de lo contrario, permanece sin cambios.

Referencias

  • Estándar C++23 (ISO/IEC 14882:2024):
  • 18.4.13 Concepto move_constructible [concept.moveconstructible]
  • Estándar C++20 (ISO/IEC 14882:2020):
  • 18.4.13 Concepto move_constructible [concept.moveconstructible]

Véase también

verifica si un tipo puede ser construido desde una referencia a valor R
(plantilla de clase)