Các khái niệmequality_comparable_with<T, U> được thiết kế để tuyên bố rằng đối tượng của loại hình Tvà Ucó thể so sánh tương đương với nhau, và nếu họ đang có, thì đây có ý nghĩa mong đợi. Tốt rồi.
Tuy nhiên, khái niệm này cũng đòi hỏi common_reference_t<T&, U&>phải tồn tại. Động lực chính cho common_referencevà chức năng tiếp viên của nó dường như là cho phép các trình vòng lặp proxy , để có một vị trí để thể hiện mối quan hệ giữa referencevà value_typecho các trình vòng lặp như vậy.
Điều đó thật tuyệt, nhưng ... điều đó có liên quan gì đến việc kiểm tra nếu a Tvà a Ucó thể được so sánh bằng nhau? Tại sao tiêu chuẩn yêu cầu điều đó Tvà Ucó mối quan hệ tham chiếu chung chỉ để cho phép bạn so sánh chúng bằng nhau?
Điều này tạo ra các tình huống kỳ quặc trong đó rất khó có hai loại không có mối quan hệ tham chiếu chung có thể so sánh một cách hợp lý. Ví dụ, vector<int>và pmr::vector<int>logic phải được so sánh. Nhưng chúng không thể là do không có tham chiếu chung hợp lý giữa hai loại không liên quan.
assignable_fromyêu cầu common_reference...