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