Концепция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...