Difference between revisions of "cpp/named req/CopyConstructible"
From cppreference.com
(+c++03) |
m (link to addressof) |
||
Line 30: | Line 30: | ||
{{rev begin}} | {{rev begin}} | ||
{{rev|until=c++11| | {{rev|until=c++11| | ||
− | The expression {{c|v.~T()}} also must be valid, and, for lvalue {{tt|v}}, the expression {{tt|&v}} must have the type {{c|T*}} or {{c|const T*}} must | + | The expression {{c|v.~T()}} also must be valid, and, for lvalue {{tt|v}}, the expression {{tt|&v}} must have the type {{c|T*}} or {{c|const T*}} and must evaluate to the address of {{tt|v}} |
}} | }} | ||
{{rev end}} | {{rev end}} | ||
===Notes=== | ===Notes=== | ||
− | Until C++11, classes that overloaded {{tt|operator&}} were not {{tt|CopyConstructible}} and thus weren't usable in the standard library containers. | + | Until C++11, classes that overloaded {{tt|operator&}} were not {{tt|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=== |
Revision as of 11:56, 8 September 2014
Template:cpp/concept/title Template:cpp/concept/navbar
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) |