Kavramequality_comparable_with<T, U>
türü bu nesnelerin bildirmek için tasarlanmıştır T
ve U
birbirine eşit karşılaştırılabilir, ve eğer, bu beklenen anlama sahiptir. Bu iyi.
Ancak, bu kavramın da var olması gerekir common_reference_t<T&, U&>
. İçin birincil itici güç common_reference
ve onun işlevselliği , proxy yineleyicilerinin etkinleştirilmesi , bu yineleyiciler arasındaki reference
ve value_type
bu yineleyiciler arasındaki ilişkiyi temsil edecek bir yeri olması gibi görünmektedir .
Bu harika, ama ... a T
ve U
a'nın birbiriyle eşit olup olmadığını test etmekle ne ilgisi var ? Standart neden bunu eşitlemenizi sağlamak için bunu gerektirir T
ve U
ortak bir referans ilişkisine sahiptir?
Bu, mantıklı olarak karşılaştırılabilir ortak referans ilişkisine sahip olmayan iki türün bulunmasının çok zor olduğu garip bir durum yaratır. Örneğin, vector<int>
ve pmr::vector<int>
mantıksal olarak benzer olması gerekir. Ancak bunun nedeni, birbiriyle alakasız iki tür arasında makul bir ortak referans olmamasıdır.
assignable_from
gerektirir common_reference
...