C++ named requirements:MoveAssignable
Specifies that an instance of the type can be assigned from an rvalue argument.
Specifies that an instance of the type can be assigned from an rvalue argument.
Specifies that an instance of the type can be assigned from an rvalue argument.