Il concetto ha loequality_comparable_with<T, U> scopo di dichiarare che gli oggetti di tipo Te Upossono essere confrontati uguali tra loro, e se lo sono, allora questo ha il significato atteso. Va bene.
Tuttavia, questo concetto richiede anche common_reference_t<T&, U&>di esistere. L'impulso principale per common_referencee la sua funzionalità relativa sembra essere quello di consentire agli iteratori proxy , di avere un posto per rappresentare la relazione tra referencee value_typeper tali iteratori.
È fantastico, ma ... cosa c'entra con il test se a Te a Upossono essere confrontati uguali tra loro? Perché lo standard lo richiede Te Uha una relazione di riferimento comune solo per permetterti di confrontarli uguali?
Questo crea situazioni strane in cui è molto difficile avere due tipi che non hanno ragionevolmente una relazione di riferimento comune logicamente comparabili. Ad esempio, vector<int>e pmr::vector<int>logicamente dovrebbe essere comparabile. Ma non possono essere perché non esiste un ragionevole riferimento comune tra i due tipi altrimenti non correlati.
assignable_fromrichiede anche common_reference...