std::optional<T>::~optional
Материал из cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev ">
</tbody><tbody>
</tbody>
~optional(); |
(начиная с C++17) (до C++20) |
|
constexpr ~optional(); |
(начиная с C++20) | |
Если объект содержит значение и тип T не является тривиально разрушаемым (смотрите std::is_trivially_destructible), уничтожает содержащееся значение, вызывая его деструктор, как если бы value().T::~T().
Иначе ничего не делает.
Примечание
Если T тривиально разрушаем, то и этот деструктор также тривиален, поэтому std::optional<T> также тривиально разрушаем.
Отчёты о дефектах
Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:
| Номер | Применён | Поведение в стандарте | Корректное поведение |
|---|---|---|---|
| WG не указан | C++20 | деструктор не был constexpr, в то время как нетривиальные деструкторы могут быть constexpr в C++20 |
сделан constexpr |