home | help
std::copy_constructible(3)     C++ Standard Libary    std::copy_constructible(3)

NAME
     std::copy_constructible - std::copy_constructible

Synopsis
	Defined in header <concepts>
	template< class T >

	concept copy_constructible =
	    std::move_constructible<T> &&
	    std::constructible_from<T,	T&>  &&  std::convertible_to<T&,  T>  &&
     (since C++20)
	    std::constructible_from<T, const T&> && std::convertible_to<const
	T&, T> &&

	    std::constructible_from<T, const T> && std::convertible_to<const
	T, T>;

	The concept copy_constructible is satisfied if T is an lvalue  reference
     type, or if
	it  is a move_constructible object type where an object of that type can
     constructed
	from a (possibly const) lvalue or const rvalue of that type in both  di-
     rect- and
	copy-initialization  contexts  with  the usual semantics (a copy is con-
     structed with
	the source unchanged).

	Semantic requirements

	If T is an object type, then copy_constructible<T> is  modeled	only  if
     given

	  *  v,  an lvalue of type (possibly const) T or an rvalue of type const
     T,

	the following are true:

	  * After the definition T u = v;, u is equal to v and v  is  not  modi-
     fied;
	  * T(v) is equal to v and does not modify v.

See also
	is_copy_constructible
	is_trivially_copy_constructible
	is_nothrow_copy_constructible	checks if a type has a copy constructor
	(C++11) 			(class template)
	(C++11)
	(C++11)

http://cppreference.com 	   2024.06.10	      std::copy_constructible(3)

home | help