`equality_comparable_with`에는`common_reference`가 필요합니까? 경우,이 예상 된 의미를 갖는다. 괜찮아. 그러나이 개념도

개념equality_­comparable_with<T, U> 유형의 객체 선언하고자 T하고 U서로 동일하게 비교 될 수 있으며,이 경우,이 예상 된 의미를 갖는다. 괜찮아.

그러나이 개념도 common_reference_t<T&, U&>존재 해야 합니다. 주요 자극 common_reference과 그 기능은 프록시 반복자가능하게reference 하고 value_type그러한 반복자 와 의 관계를 나타내는 장소를 갖는 것 같습니다 .

훌륭하지만 … a T와 a U를 서로 비교할 수 있다면 테스트와 어떤 관련이 있습니까? 표준가 요구하는 것은 왜 TU공통의 참조 관계를 가지고 당신이 그들을 동일 비교할 수 있도록?

논리적으로 비교 가능한 공통 참조 관계를 갖지 않는 두 가지 유형을 갖는 것이 매우 어려운 이상한 상황을 만듭니다. 예를 들어, vector<int>그리고 pmr::vector<int>논리적으로는 비교할 수해야한다. 그러나 다른 두 관련이없는 유형 사이에 합리적인 공통 참조가 없기 때문에 가능하지 않습니다.



답변

이것은 Palo Alto 보고서 , §3.3 및 D.2 로 거슬러 올라갑니다 .

교차 유형 개념이 수학적으로 견고 해지려면 교차 유형 비교의 의미를 정의해야합니다. 를 들어 equality_comparable_with, t == u일반적 의미 tu동일하지만이 경우에도 동일하게 다른 유형의 두 값이 무엇을 의미합니까? 이 설계에서는 교차 유형 평등을 공통 (참조) 유형에 매핑하여 정의합니다 (값을 유지하려면이 변환이 필요함).

강한 공리 equality_comparable_with가 바람직하지 않은 경우, 표준은 박람회 전용 개념 weakly-equality-comparable-with을 사용하며 해당 개념은 공통 참조가 필요하지 않습니다. 그것은 (케이시 카터의 말)는 “의미 가증”그러나이며, 박람회 전용 그 이유이다 : 그것은 가지고 있습니다 t == ut2 == u하지만 t != t2(이 보초를 위해 실제로 필요합니다).


답변