Das Konzeptequality_comparable_with<T, U>
soll erklären, dass Objekte vom Typ T
und U
miteinander verglichen werden können, und wenn dies der Fall ist, hat dies die erwartete Bedeutung. Das ist gut.
Dieses Konzept muss common_reference_t<T&, U&>
jedoch auch existieren. Der Hauptimpuls für common_reference
und die damit verbundene Funktionalität scheint darin zu bestehen, Proxy-Iteratoren zu ermöglichen , einen Platz zu haben, um die Beziehung zwischen reference
und value_type
für solche Iteratoren darzustellen .
Das ist großartig, aber ... was hat das mit dem Testen zu tun, ob a T
und a U
gleich miteinander verglichen werden können? Warum verlangt der Standard dies T
und U
hat eine gemeinsame Referenzbeziehung, damit Sie sie gleich vergleichen können?
Dies führt zu merkwürdigen Situationen, in denen es sehr schwierig ist, zwei Typen zu haben, die vernünftigerweise keine gemeinsame Referenzbeziehung haben, die logisch vergleichbar ist. Zum Beispiel vector<int>
und sollte pmr::vector<int>
logischerweise vergleichbar sein. Aber sie können nicht sein, weil es keinen vernünftigen gemeinsamen Bezug zwischen den beiden ansonsten nicht verwandten Typen gibt.
assignable_from
erfordert sogar common_reference
...