的概念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...