Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/named req/CopyConstructible"

From cppreference.com
< cpp‎ | named req
m (Update links.)
(align the wording with the std (table 21 CopyConstructible))
Line 3: Line 3:
  
 
Specifies that an instance of the type can be copy-constructed (copied).  
 
Specifies that an instance of the type can be copy-constructed (copied).  
 
This concept implies {{concept|MoveConstructible}}.
 
  
 
===Requirements===
 
===Requirements===
  
The type must implement the following functions:
+
The type must satisfy {{concept|MoveConstructible}}.  
 
+
{{member | {{dsc small|Type::}}Type | 2=
+
 
+
{{ddcl | notes={{mark|One of the variants is sufficient}} | 1=
+
Type::Type( Type& other );
+
Type::Type( const Type& other );
+
Type::Type( volatile Type& other );
+
Type::Type( const volatile Type& other );
+
}}
+
 
+
[[cpp/language/copy_constructor|Copy constructor]]: constructs an instance of a type with the contents of {{tt|other}}. The internal state of {{tt|other}} is not modified.
+
  
The following expressions must have the specified effects:
+
In addition, the following expressions must be valid and have the specified effects:
  
 
{{dsc begin}}
 
{{dsc begin}}
 
{{dsc hitem | Expression | Effects}}
 
{{dsc hitem | Expression | Effects}}
{{dsc | {{c|1=Type a = v;}} | {{tt|a}} is equivalent to {{tt|v}}, where {{tt|v}} is an instance of {{tt|Type}}. {{tt|v}} must be unchanged.}}
+
{{dsc | {{c|1=Type a = v;}} | {{tt|a}} is equivalent to {{tt|v}}, where {{tt|v}} is an instance of {{tt|Type}}. {{tt|v}} must remain unchanged.}}
{{dsc | {{c|Type(v);}} |  a temporary object of type {{tt|Type}} is equivalent to {{tt|v}}, where {{tt|v}} is an instance of {{tt|Type}}. {{tt|v}} must be unchanged. }}
+
{{dsc | {{c|Type(v);}} |  a temporary object of type {{tt|Type}} is equivalent to {{tt|v}}, where {{tt|v}} is an instance of {{tt|Type}}. {{tt|v}} must remain unchanged. }}
 
{{dsc end}}
 
{{dsc end}}
}}
 
  
 
===See also===
 
===See also===

Revision as of 11:25, 28 December 2013

Template:cpp/concept/title Template:cpp/concept/navbar

Specifies that an instance of the type can be copy-constructed (copied).

Requirements

The type must satisfy Template:concept.

In addition, the following expressions must be valid and have the specified effects:

Expression Effects
Type a = v; a is equivalent to v, where v is an instance of Type. v must remain unchanged.
Type(v); a temporary object of type Type is equivalent to v, where v is an instance of Type. v must remain unchanged.

See also

checks if a type has a copy constructor
(class template) [edit]