~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.