O conceitoequality_comparable_with<T, U> se destina a declarar que os objetos do tipo Te Upode ser comparado iguais uns aos outros, e se eles são, então este tem o significado esperado. Isso é bom.
No entanto, esse conceito também requer common_reference_t<T&, U&>a existência. O principal ímpeto common_referencee sua funcionalidade correspondente parecem permitir os iteradores de proxy , ter um lugar para representar o relacionamento entre referencee value_typepara esses iteradores.
Isso é ótimo, mas ... o que isso tem a ver com o teste se a Te a Upodem ser comparados entre si? Por que o padrão exige isso Te Utem um relacionamento de referência comum apenas para permitir que você os compare igual?
Isso cria situações estranhas em que é muito difícil ter dois tipos que não têm razoavelmente um relacionamento de referência comum logicamente comparável. Por exemplo, vector<int>e pmr::vector<int>logicamente deve ser comparável. Mas não podem ser porque não há uma referência comum razoável entre os dois tipos não relacionados.
assignable_fromexige common_reference...