c++ - 为什么 std::optional 对 std::nullopt 类型的操作数有一个特殊的相等运算符
问题描述
类模板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;
)
引入这个特殊运算符的原因是什么?
解决方案
您正在查看 C++20 草案。不迟于N4820的草稿具有所有相等运算符。由于引入了重写的候选人,它们后来被删除 [可能] 。
推荐阅读
- amazon-redshift - 如何在redshift中获取由给定查询操作的表
- spring - 连接时从 Spring Boot 项目到 PostgreSQL 数据库的连接问题
- c# - 为什么当切换回主菜单时场景 DontDestroyOnLoad 会停留?
- amazon-web-services - 带有 CloudWatch 事件的 AWS API 网关
- javascript - X 轴上的 Nivo Line Formatting 时间刻度
- c# - 如何在 SQL 合并语句中处理 JSON 数据
- mysql - 在 Node JS 中使用 Sequelize 的动态表名
- rest - 如何在 SwaggerHub 中记录要模拟的 api 调用?
- timezone - 日期是否在 ISO 8601 的目标时区中?
- c# - 如何正确实现 IEnumerable 以返回项目以按属性优先?