18 Concepts library [concepts]

18.4 Language-related concepts [concepts.lang]

18.4.14 Concept CopyConstructible [concept.copyconstructible]

template<class T> concept CopyConstructible = MoveConstructible<T> && Constructible<T, T&> && ConvertibleTo<T&, T> && Constructible<T, const T&> && ConvertibleTo<const T&, T> && Constructible<T, const T> && ConvertibleTo<const T, T>;
If T is an object type, then let v be an lvalue of type (possibly const) T or an rvalue of type const T.
T models CopyConstructible only if
  • After the definition T u = v;, u is equal to v.
  • T(v) is equal to v.