cpp/experimental/ranges/concepts/CopyConstructible

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

More precisely, if is an object type, then  is satisfied only if given the following are true:
 * , an lvalue of type (possibly ) or an rvalue of type ,
 * After the definition, is equal to ;
 * is equal to.