C++ named requirements: EqualityComparable
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
해당 타입은
==
연산자와 함께 작동해야 하며 결과는 표준 의미론을 가져야 합니다.
목차 |
요구사항
타입
T
가 다음 조건을 만족하면
EqualityComparable
을 만족합니다: 타입
T
또는
(since C++11)
const
T
의 표현식
a
,
b
,
c
가 주어졌을 때, 다음 표현식이 유효하고 지정된 효과를 가지는 경우:
| Expression | Type | Effects |
|---|---|---|
| a == b |
BooleanTestable
요구사항을 충족함
(C++20 이전) |
동치 관계
를 정의함. 즉 다음 속성들을 만족함:
|
boolean-testable
개념을 모델링함
(C++20 이후) |
참고 사항
이 요구사항을 충족시키기 위해, 내장된 비교 연산자 가 없는 타입들은 사용자 정의 operator == 를 제공해야 합니다.
EqualityComparable 이면서 동시에 LessThanComparable 인 타입들에 대해, C++ 표준 라이브러리는 다음과 같은 구분을 만듭니다
- 동등성(Equality) , 이는 표현식 a == b 의 값이며
- 동치(Equivalence) , 이는 표현식 ! ( a < b ) && ! ( b < a ) 의 값입니다.
결함 보고서
다음 동작 변경 결함 보고서는 이전에 게시된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 수정된 동작 |
|---|---|---|---|
| LWG 283 | C++98 |
T
가
EqualityComparable
인 경우에도
요구 사항이 const T 객체에 적용되지 않음 |
T
대신
const T 에 적용됨 |
|
LWG 2114
( P2167R3 ) |
C++98 | bool 로의 변환 가능성이 구현의 기대를 반영하기에 너무 약함 | 요구 사항 강화됨 |
참고 항목
|
operator
==
가 동치 관계임을 명시함
(concept) |