Namespaces
Variants

std::optional<T>:: ~optional

From cppreference.net
Utilities library
~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 ではなかったが、C++20では非自明なデストラクタも constexpr になり得る constexpr に変更