Namespaces
Variants

std:: move_constructible

From cppreference.net
Défini dans l'en-tête <concepts>
template < class T >
concept move_constructible = std:: constructible_from < T, T > && std:: convertible_to < T, T > ;
(depuis C++20)

Le concept move_constructible est satisfait si T est un type référence, ou s'il s'agit d'un type objet pour lequel un objet de ce type peut être construit à partir d'une rvalue de ce type dans des contextes d'initialisation directe et par copie, avec la sémantique habituelle.

Exigences sémantiques

Si T est un type d'objet, alors move_constructible<T> est modélisé uniquement si étant donné

  • rv , une rvalue de type T , et
  • u2 , un objet distinct de type T égal à rv ,

les affirmations suivantes sont vraies :

  • Après la définition T u = rv ; , u est égal à u2 ;
  • T(rv) est égal à u2 ; et
  • Si T n'est pas qualifié const, alors l'état résultant de rv (après l'évaluation de la définition/expression dans l'un ou l'autre des points ci-dessus) est valide mais non spécifié ; sinon, il reste inchangé.

Références

  • Norme C++23 (ISO/CEI 14882:2024) :
  • 18.4.13 Concept move_constructible [concept.moveconstructible]
  • Norme C++20 (ISO/CEI 14882:2020) :
  • 18.4.13 Concept move_constructible [concept.moveconstructible]

Voir aussi

vérifie si un type peut être construit à partir d'une référence rvalue
(modèle de classe)