命名空间
变体
操作

std::optional<T>::~optional

来自 cppreference.cn
< cpp‎ | 工具库‎ | optional
 
 
 
 
~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 在 C++20 中,非平凡析构函数可以是 constexpr,但析构函数不是 constexpr 设为 constexpr