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
Tsatisfies MoveConstructible, and
Given
v, an lvalue expression of typeTorconst Tor an rvalue expression of typeconst Tu, an arbitrary identifier
The following expressions must be valid and have their specified effects
| Expression | Post-conditions |
|---|---|
| T u = v; | The value of u is equivalent to the value of v.
The value of |
| T(v) | The value of T(v) is equivalent to the value of v.
The value of |
|
The expression v.~T() also must be valid, and, for lvalue |
(until C++11) |
Notes
Until C++11, classes that overloaded operator& were not CopyConstructible and thus weren't usable in the standard library containers. As of C++11, the standard library uses std::addressof whenever the address of an object is needed.
See also
|
(C++11)(C++11)(C++11)
|
checks if a type has a copy constructor (class template) |
|
(C++20)
|
specifies that an object of a type can be copy constructed and move constructed (concept) |