C++ named requirements: CopyConstructible
Specifies that an instance of the type can be copy-constructed from an lvalue expression.
Requirements
The type T satisfies CopyConstructible if
- The type T satisfies MoveConstructible, and
Given
v
, an lvalue expression of type T or const T or an rvalue expression of type const Tu
, an arbitrary identifier
The following expressions must be valid and have their specified effects
pub | Expression | Post-conditions |
pub | T u = v; | The value of u is equivalent to the value of v. The value of v is unchanged. |
pub | T(v) | The value of T(v) is equivalent to the value of v. The value of v is unchanged. |
The expression v.~T()
also must be valid, and, for lvalue v
,
the expression &v
must have the type T*
or const T*
and must evaluate to the address of v
. (do C++11)
Notes
classes that overloaded operator& were not CopyConstructible and thus were not usable in the
standard library containers. This is a design decision in C++98
(instead of a defect, see LWG issue 390). (do C++11)
the standard library uses std::addressof whenever the address of an object is needed. (od C++11)