Namespaces
Variants

std:: copy_constructible

From cppreference.net
Definiert im Header <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 > ;
(seit C++20)

Das Konzept copy_constructible ist erfüllt, wenn T ein Lvalue-Referenztyp ist, oder wenn es ein move_constructible Objekttyp ist, bei dem ein Objekt dieses Typs sowohl im direkten als auch im Kopierinitialisierungskontext mit den üblichen Semantiken aus einem (möglicherweise const) Lvalue oder const Rvalue dieses Typs konstruiert werden kann (eine Kopie wird erstellt, während die Quelle unverändert bleibt).

Semantische Anforderungen

Wenn T ein Objekttyp ist, dann wird copy_constructible<T> nur modelliert, wenn gegeben

  • v , ein Lvalue vom Typ (möglicherweise const ) T oder ein Rvalue vom Typ const T ,

Folgendes trifft zu:

  • Nach der Definition T u = v ; ist u gleich v und v wird nicht modifiziert;
  • T ( v ) ist gleich v und modifiziert v nicht.

Referenzen

  • C++23-Standard (ISO/IEC 14882:2024):
  • 18.4.14 Konzept copy_constructible [concept.copyconstructible]
  • C++20-Standard (ISO/IEC 14882:2020):
  • 18.4.14 Konzept copy_constructible [concept.copyconstructible]

Siehe auch

prüft, ob ein Typ einen Kopierkonstruktor besitzt
(Klassentemplate)