类模板std::optional
具有转换构造函数
constexpr optional(nullopt_t) noexcept;
所以出现了一个问题,为什么在 C++ 标准中声明了特殊的单一相等运算符
template<class T> constexpr bool operator==(const optional<T>&, nullopt_t) noexcept;
何时std::nullopt
仅用作第二个操作数?
(例如参见 C++ 20 Draft N 4860
// 20.6.7, comparison with nullopt
template<class T> constexpr bool operator==(const optional<T>&, nullopt_t) noexcept;
)
引入这个特殊运算符的原因是什么?