Namespaces
Variants
Views
Actions

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

From cppreference.com
< cpp‎ | named req
m (Text replace - "{{tdcl" to "{{dcl")
m (Text replace - "/sidebar" to "/navbar")
Line 1: Line 1:
 
{{cpp/concept/title|MoveAssignable {{mark since c++11}}}}
 
{{cpp/concept/title|MoveAssignable {{mark since c++11}}}}
{{cpp/concept/sidebar}}
+
{{cpp/concept/navbar}}
  
 
Specifies that an instance of the type can be move-assigned (moved). This means that type has move semantics: that is, can transfer its internal state to another instance of the same type potentially minimizing the overhead.
 
Specifies that an instance of the type can be move-assigned (moved). This means that type has move semantics: that is, can transfer its internal state to another instance of the same type potentially minimizing the overhead.

Revision as of 12:27, 15 June 2012

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

Specifies that an instance of the type can be move-assigned (moved). This means that type has move semantics: that is, can transfer its internal state to another instance of the same type potentially minimizing the overhead.

Requirements

The type must meet Template:concept requirements and/or implement the following functions:

Type::operator=

Type& Type::operator=( Type&& other );

Type& Type::operator=( const Type&& other );
Type& Type::operator=( volatile Type&& other );

Type& Type::operator=( const volatile Type&& other );
(One of the variants is sufficient)

Move assignment operator: assigns the contents of other. The internal state of other is unspecified after the move. However, it must still be valid, that is, no invariants of the type are broken. The function must return *this.

The following expressions must have the specified effects:

Expression Effects
a = rv; a is equivalent to rv, where a is an instance of Type and rv is a rvalue reference of Type.

See also

checks if a type has a move assignment operator
(class template) [edit]