Scroll to navigation

std::optional::~optional(3) C++ Standard Libary std::optional::~optional(3)

NAME

std::optional::~optional - std::optional::~optional

Synopsis


~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
std::is_trivially_destructible), destroys the contained value by calling its
destructor, as if by value().T::~T().


Otherwise, does nothing.

Notes


If T is trivially-destructible, then this destructor is also trivial, so
std::optional<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
the destructor was not constexpr while
P2231R1 C++20 non-trivial destructors can be constexpr in made constexpr
C++20

2022.07.31 http://cppreference.com