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