If *this contains a value, destroy that value as if by value().T::~T(). Otherwise, there are no effects.
*this does not contain a value after this call.