Namespaces
Variants

std::optional<T>::~optional

From ru.cppreference.net
 
 
Библиотека утилит
Поддержка языка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования возможностей библиотеки (C++20)
Утилиты программ
Функции с переменным числом аргументов
Поддержка корутин (C++20)
Поддержка контрактов (C++26)
Трёхстороннее сравнение
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Общие утилиты
Операторы отношений (устарело в C++20)
 
 
~optional();
(начиная с C++17)
(constexpr начиная с C++20)

Если объект содержит значение и тип T не является тривиально разрушаемым (см. std::is_trivially_destructible), уничтожает содержащееся значение вызовом его деструктора, как если бы было выполнено value().T::~T().

В противном случае ничего не делает.

Примечания

Если T является тривиально-разрушаемым, то этот деструктор также является тривиальным, поэтому std:: optional < T > также является тривиально-разрушаемым.

Макрос тестирования возможностей Значение Стандарт Функция
__cpp_lib_optional 202106L (C++20)
(DR20)
Полностью constexpr

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применяется к Поведение в опубликованной версии Корректное поведение
P2231R1 C++20 деструктор не был constexpr в то время как нетривиальные деструкторы могут быть constexpr в C++20 сделан constexpr