Gau*_*ant 11 c++ spaceship-operator c++20
我在浏览cppreference 时看到vectorC++20 中删除了它的比较操作,并<=>引入了飞船运算符 ( )。对于许多其他标准库容器,如set和 ,可以看到同样的事情map。
如何在新标准中进行比较?另外,C++20 会开始在旧代码上出错吗?
Som*_*ude 19
如果您继续在参考站点上浏览一点,您可能会来到默认比较部分,它只是说明:
简言之,它定义一类
operator<=>自动获取编译器生成的运营商<,<=,>,和>=。
因此,如果某个类存在“太空船”运算符,编译器将使用运算符的结果自动生成剩余的比较运算符<=>。
请注意,不会生成==运算符(即使它应该是可能的),但会保持.std::vectoroperator==
至于:
C++ 20 会开始在旧代码上出错吗?
不,不会。
当建立与一个C ++编译器20,与它应该使用标准库也可用于C ++ 20制成,从而实现<=>操作者,如上文所解释的,这将随后被使用。
但是,如果您使用 C++20 编译器来构建较旧的标准库,则该较旧的标准库仍将实现较旧的比较运算符。
| 归档时间: |
|
| 查看次数: |
674 次 |
| 最近记录: |