~optional();
Effects: If is_trivially_destructible_v<T> != true and *this contains a value, calls val->T::~T().
Remarks: If is_trivially_destructible_v<T> == true then this destructor shall be a trivial destructor.