Difference between revisions of "cpp/named req/CopyConstructible"
From cppreference.com
m (Text replace - "{{concept" to "{{named req") |
(named req/core) |
||
Line 5: | Line 5: | ||
===Requirements=== | ===Requirements=== | ||
− | The type {{tt|T}} satisfies {{ | + | The type {{tt|T}} satisfies {{named req/core|CopyConstructible}} if |
* The type {{tt|T}} satisfies {{named req|MoveConstructible}}, and | * The type {{tt|T}} satisfies {{named req|MoveConstructible}}, and | ||
Line 35: | Line 35: | ||
===Notes=== | ===Notes=== | ||
− | Until C++11, classes that overloaded {{tt|operator&}} were not {{ | + | Until C++11, classes that overloaded {{tt|operator&}} were not {{named req/core|CopyConstructible}} and thus weren't usable in the standard library containers. As of C++11, the standard library uses {{lc|std::addressof}} whenever the address of an object is needed. |
===See also=== | ===See also=== | ||
Line 42: | Line 42: | ||
{{dsc end}} | {{dsc end}} | ||
− | + | {{langlinks|de|es|fr|it|ja|pt|ru|zh}} | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + |
Revision as of 00:43, 17 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 MoveConstructible, 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) |