yug*_*ugr 8 c++ language-lawyer spaceship-operator c++20
operator <=>
C++20 允许用户在定义:std::partial_ordering
和std::weak_ordering
时指定不同的返回类型std::strong_ordering
。指定它们是否意味着相应的类承诺遵守某些排序公理?例如,对于部分排序,这些将是非自反性、不对称性和传递性。
我在 C++20 标准中找不到任何提及这一点的内容。
是的,这绝对是类别的目的。
所有的顺序都应该是非自反的、不对称的和传递的。weak_ordering
并且strong_ordering
应该是总订单。strong_ordering
暗示着可替代性(即a == b
暗示,对于这个问题有意义的f(a) == f(b)
一组函数- 例如不是一个这样的函数)。f
std::addressof
这不在 C++ 标准中,因为它实际上不是语言规则的问题 - 这是作为程序员应该做什么或不应该做什么的问题。就像如果您声明operator<=>
returns strong_ordering
,它绝对应该是满足可替代性的有效顺序 - 但这最多只是一个注释,并且在文档的其余部分中会感觉不合适。
但您可以阅读更多原始订购文件以了解意图,例如P0100和P0515。
归档时间: |
|
查看次数: |
406 次 |
最近记录: |