-2

类模板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;

)

引入这个特殊运算符的原因是什么?

4

1 回答 1

3

您正在查看 C++20 草案。不迟于N4820的草稿具有所有相等运算符。由于引入了重写的候选人,它们后来被删除 [可能] 。

于 2021-07-13T22:50:43.920 回答