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

From cppreference.com

Specifies that an instance of the type can be assigned from an

rvalue

argument.

Requirements

The type T satisfies MoveAssignable if

Given

t, a modifiable

lvalue expression

of type T,

rv, an

rvalue

expression of type T.

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

ExpressionReturn typeReturn valuePost-conditions t=rvT&tIf 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