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