的概念equality_comparable_with<T, U>
旨在声明类型的对象T
和U
可比较彼此相等,而如果是这样,则这具有预期含义。没关系。
但是,这个概念也必须common_reference_t<T&, U&>
存在。对于主要推动力common_reference
和随之而来的功能似乎是启用代理迭代器,有代表之间的关系的地方reference
,并value_type
为这样的迭代器。
太好了,但是...与a T
和a是否U
可以彼此相等进行测试有什么关系?为什么标准要求这样做T
并U
具有共同的引用关系,以使您可以比较它们相等?
这就产生了奇怪的情况,在这种情况下,很难拥有两种在逻辑上不具有合理可比性的公共参照关系的类型。例如,vector<int>
并且pmr::vector<int>
在逻辑上应该是可比较的。但是它们之所以不可以,是因为这两个原本不相关的类型之间没有合理的公共引用。
assignable_from
需要common_reference
...