C++ named requirements:CopyAssignable
Specifies that an instance of the type can be copy-assigned from an lvalue expression.
Specifies that an instance of the type can be copy-assigned from an lvalue expression.
Specifies that an instance of the type can be copy-assigned from an lvalue expression.