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.

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.

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.

See also

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