cpp/concepts/assignable from

The concept specifies that an expression of the type and value category specified by  can be assigned to an lvalue expression whose type is specified by.

Semantic requirements
Given is modeled only if
 * , an lvalue that refers to an object such that  is ,
 * , an expression such that is ,
 * , a distinct object that is equal to ,
 * (i.e., the assignment expression yields an lvalue referring to the left operand);
 * After evaluating :
 * is equal to, unless is a non-const xvalue that refers to  (i.e., the assignment is a self-move-assignment),
 * if is a glvalue:
 * If it is a non-const xvalue, the object to which it refers is in a valid but unspecified state;
 * Otherwise, the object it refers to is not modified;