Концепция equality_comparable_with<T, U>
предназначена для объявления, что объекты типа T
и U
могут сравниваться равными друг другу, и если они есть, то это имеет ожидаемое значение. Это нормально.
Однако для этой концепции также требуется common_reference_t<T&, U&>
. Похоже, что основным стимулом для common_reference
и его сопутствующей функциональности является , позволяющий прокси-итераторам иметь место для представления взаимосвязи между reference
и value_type
для таких итераторов.
Это замечательно, но ... какое это имеет отношение к тестированию, если T
и U
можно сравнить равными друг другу? Почему стандарт требует, чтобы T
и U
имели общие эталонные отношения, чтобы вы могли сравнивать их равными?
Это создает странные ситуации, когда очень трудно иметь два типа, которые не обоснованно иметь общие ссылки, которые логически сопоставимы. Например, vector<int>
и pmr::vector<int>
должны быть логически сопоставимы. Но они не могут быть, потому что нет разумной общей ссылки между двумя иначе не связанными типами.