Namespaces
Variants

C++ named requirements: EqualityComparable

From cppreference.net
C++ named requirements

해당 타입은 == 연산자와 함께 작동해야 하며 결과는 표준 의미론을 가져야 합니다.

목차

요구사항

타입 T 가 다음 조건을 만족하면 EqualityComparable 을 만족합니다: 타입 T 또는 (since C++11) const T 의 표현식 a , b , c 가 주어졌을 때, 다음 표현식이 유효하고 지정된 효과를 가지는 경우:

Expression Type Effects
a == b BooleanTestable 요구사항을 충족함
(C++20 이전)
동치 관계 를 정의함. 즉 다음 속성들을 만족함:
  • 모든 a 값에 대해 a == a true 를 반환함.
  • 만약 a == b 이면, b == a 임.
  • 만약 a == b 이고 b == c 이면, a == c 임.
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)