*this contains a value | *this does not contain a value | |||
rhs contains a value | assigns std​::​move(*rhs) to the contained value | initializes the contained value as if direct-non-list-initializing an object of type T with std​::​move(*rhs) | ||
rhs does not contain a value | destroys the contained value by calling val->T​::​~T() | no effect |