Namespaces
Variants

std::optional<T>::~optional

来自 zh.cppreference.net
 
 
 
 
~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