Namespaces
Variants

std:: copy_constructible

From cppreference.net
Défini dans l'en-tête <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 > ;
(depuis C++20)

Le concept copy_constructible est satisfait si T est un type de référence lvalue, ou s'il s'agit d'un type d'objet move_constructible où un objet de ce type peut être construit à partir d'une lvalue (éventuellement const) ou d'une rvalue const de ce type dans des contextes d'initialisation directe et par copie avec la sémantique habituelle (une copie est construite sans modification de la source).

Exigences sémantiques

Si T est un type objet, alors copy_constructible<T> est modélisé seulement si étant donné

  • v , une lvalue de type (éventuellement const ) T ou une rvalue de type const T ,

les affirmations suivantes sont vraies :

  • Après la définition T u = v ; , u est égal à v et v n'est pas modifié ;
  • T ( v ) est égal à v et ne modifie pas v .

Références

  • Norme C++23 (ISO/CEI 14882:2024) :
  • 18.4.14 Concept copy_constructible [concept.copyconstructible]
  • Norme C++20 (ISO/IEC 14882:2020) :
  • 18.4.14 Concept copy_constructible [concept.copyconstructible]

Voir aussi

vérifie si un type possède un constructeur de copie
(modèle de classe)