std::optional<T>::~optional
From cppreference.com
| ~optional(); |
(C++17以降) (C++20 以降 constexpr) |
|
オブジェクトが値を保持しており、かつ型Tが自明に破棄可能(trivially destructible)でない場合(std::is_trivially_destructible参照)、保持している値をそのデストラクタを呼び出すことによって破棄します。これはあたかもvalue().T::~T()のように動作します。
それ以外の場合は、何もしません。
[編集] 注釈
Tが自明に破棄可能(trivially-destructible)である場合、このデストラクタも自明であるため、std::optional<T>も自明に破棄可能(trivially-destructible)となります。
| 機能テストマクロ | 値 | 規格 | 機能 |
|---|---|---|---|
__cpp_lib_optional |
202106L |
(C++20) (DR20) |
完全な constexpr |
[編集] 不具合報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| P2231R1 | C++20 | デストラクタはconstexprではありませんでしたが、C++20では非自明なデストラクタもconstexprにできます。 | constexprではありませんでした。 |