 st8b7c:f320:99b9:690f:4595:cd17:293a:c069optional<T>8b7c:f320:99b9:690f:4595:cd17:293a:c069~optional    ~optional();
    (since C++17) (until C++20)     constexpr ~optional();
    (since C++20)    If the object contains a value and the type T is not trivially destructible (see st8b7c:f320:99b9:690f:4595:cd17:293a:c069is_trivially_destructible), destroys the contained value by calling its destructor, as if by value().T8b7c:f320:99b9:690f:4595:cd17:293a:c069~T().
Otherwise, does nothing.
 Notes If T is trivially-destructible, then this destructor is also trivial, so st8b7c:f320:99b9:690f:4595:cd17:293a:c069optional<T> is also trivially-destructible.
 Defect reports The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
   DR   Applied to   Behavior as published   Correct behavior 
   P2231R1   C++20   the destructor was not constexpr while non-trivial destructors can be constexpr in C++20   made constexpr 

 

    
{'path': 'public/docs/cpp/utility/optional/~optional.html', 'source': 'DevDocs.IO'}