Difference between revisions of "cpp/named req/CopyConstructible"
From cppreference.com
m (Text replace - "cpp/concept" to "cpp/named req") |
m (T. Canens moved page cpp/concept/CopyConstructible to cpp/named req/CopyConstructible without leaving a redirect: Text replace - "cpp/concept" to "cpp/named req") |
Revision as of 13:45, 15 June 2018
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 Template:concept, and
Given
-
v
, an lvalue expression of typeT
orconst T
or an rvalue expression of typeconst T
-
u
, 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) |