std::optional<T>:: ~optional
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
optional::~optional
|
||||
| Observers | ||||
| Iterators | ||||
|
(C++26)
|
||||
|
(C++26)
|
||||
| Monadic operations | ||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(C++23)
|
||||
| Modifiers | ||||
| Non-member functions | ||||
| Deduction guides | ||||
| Helper classes | ||||
| Helper objects | ||||
|
~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 |