Namespaces
Variants
Views
Actions

C++ named requirements: MoveAssignable (since C++11)

From cppreference.com
< cpp‎ | named req
 
 
C++ named requirements
Basic
MoveAssignable
(C++11)
Type properties
Library-Wide
Container
Container Elements
(C++11)

Iterator
Stream I/O
Formatters
(C++20)
Random Numbers
(C++11)    
Concurrency
(C++11)
(C++11)
Ranges
Other
(C++11)


 

Specifies that an instance of the type can be assigned from an rvalue argument.

[edit] Requirements

The type T satisfies MoveAssignable if

Given

The following expressions must be valid and have their specified effects.

Expression Return type Return value Post-conditions
t = rv T& t If t and rv do not refer to the same object, the value of t is equivalent to the value of rv before the assignment.

The new value of rv is unspecified.

[edit] Notes

The type does not have to implement move assignment operator in order to satisfy this type requirement: a copy assignment operator that takes its parameter by value or as a const Type&, will bind to rvalue argument.

If a MoveAssignable class implements a move assignment operator, it may also implement move semantics to take advantage of the fact that the value of rv after assignment is unspecified.

[edit] See also

checks if a type has a move assignment operator
(class template) [edit]
specifies that a type is assignable from another type
(concept) [edit]