The Konsepequality_comparable_with<T, U>
ini dimaksudkan untuk menyatakan bahwa objek dari jenis T
dan U
dapat dibandingkan sama satu sama lain, dan jika mereka, maka ini memiliki arti yang diharapkan. Tidak apa-apa.
Namun, konsep ini juga perlu common_reference_t<T&, U&>
ada. Dorongan utama untuk common_reference
dan fungsi petugasnya tampaknya adalah untuk mengaktifkan iterator proxy , untuk memiliki tempat untuk mewakili hubungan antara reference
dan value_type
untuk iterator tersebut.
Itu bagus, tapi ... apa hubungannya dengan pengujian jika a T
dan a U
dapat dibandingkan dengan satu sama lain? Mengapa standar mengharuskan itu T
dan U
memiliki hubungan referensi yang sama hanya untuk memungkinkan Anda membandingkannya dengan setara?
Ini menciptakan situasi yang aneh di mana sangat sulit untuk memiliki dua jenis yang tidak cukup memiliki hubungan referensi umum yang secara logika sebanding. Misalnya, vector<int>
dan pmr::vector<int>
secara logis harus sebanding. Tapi mereka tidak bisa karena tidak ada referensi umum yang masuk akal antara dua jenis yang tidak berhubungan.
assignable_from
membutuhkan common_reference
...