O conceitoequality_comparable_with<T, U>
se destina a declarar que os objetos do tipo T
e U
pode 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_reference
e sua funcionalidade correspondente parecem permitir os iteradores de proxy , ter um lugar para representar o relacionamento entre reference
e value_type
para esses iteradores.
Isso é ótimo, mas ... o que isso tem a ver com o teste se a T
e a U
podem ser comparados entre si? Por que o padrão exige isso T
e U
tem 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_from
exige common_reference
...