Koncepcjaequality_comparable_with<T, U> ma zadeklarować, że obiekty typu Ti Umożna porównać sobie równe, a jeśli są, to ma oczekiwaną znaczenie. W porządku.
Jednak ta koncepcja również musi common_reference_t<T&, U&>istnieć. Głównym impulsem common_referencei towarzyszącą mu funkcją wydaje się być umożliwienie iteratorom proxy , aby mieć miejsce do reprezentowania relacji między takimi iteratorami referencei value_typedla nich.
To świetnie, ale ... co to ma wspólnego z testowaniem, jeśli a Ti a Umożna porównać równe sobie? Dlaczego standard tego wymaga Ti Uma wspólną relację odniesienia, aby umożliwić porównanie ich na równi?
Stwarza to sytuacje nieparzystej gry, w których bardzo trudno jest mieć dwa typy, które nie mają rozsądnie wspólnego stosunku odniesienia, który jest logicznie porównywalny. Na przykład vector<int>i pmr::vector<int>logicznie powinno być porównywalne. Ale nie mogą tak być, ponieważ nie ma rozsądnego wspólnego odniesienia między tymi dwoma niezwiązanymi ze sobą typami.
assignable_fromwymaga common_reference...