Namespaces
Variants

std::optional<T>:: ~optional

From cppreference.net
Utilities library
~optional ( ) ;
(自 C++17 起)
(自 C++20 起为 constexpr)

如果对象包含值且类型 T 非可平凡析构(参见 std::is_trivially_destructible ),则通过调用其析构函数销毁所含值,如同通过 value ( ) . T :: ~T ( ) 实现。

否则,不执行任何操作。

注释

如果 T 是平凡可析构的,那么此析构函数也是平凡的,因此 std:: optional < T > 也是平凡可析构的。

功能测试宏 标准 功能特性
__cpp_lib_optional 202106L (C++20)
(DR20)
完全 constexpr

缺陷报告

下列行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。

缺陷报告 适用范围 发布时行为 正确行为
P2231R1 C++20 析构函数未声明为 constexpr ,但C++20允许非平凡析构函数为 constexpr 已改为 constexpr