Namespaces
Variants

C++ named requirements: LessThanComparable

From cppreference.net
C++ named requirements

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

목차

요구사항

타입 T 가 다음 조건을 만족하면 LessThanComparable 을 만족합니다: 타입 T 또는 const T (C++11부터) 인 표현식 a , b , c 가 주어졌을 때, 다음 표현식이 유효하며 명시된 효과를 가져야 합니다:

표현식 타입 효과
a < b BooleanTestable 요구사항 충족
(C++20 이전)
다음 속성을 가진 엄격한 약순서 관계를 설정함:
  • 모든 a 에 대해, ! ( a < a ) true 를 반환함.
  • 만약 a < b 이면, ! ( b < a ) 임.
  • 만약 a < b 이고 b < c 이면, a < c 임.
  • equiv ( a, b ) ! ( a < b ) && ! ( b < a ) 로 정의할 때, 만약 equiv ( a, b ) 이고 equiv ( b, c ) 이면, equiv ( a, c ) 임.
boolean-testable 개념 모델
(C++20 이후)

참고 사항

이 요구사항을 충족하기 위해, 내장된 comparison operators 가 없는 타입들은 사용자 정의 operator < 를 제공해야 합니다.

EqualityComparable LessThanComparable 요구 사항을 모두 만족하는 타입에 대해, C++ 표준 라이브러리는 다음과 같은 구분을 합니다

  • 동등성(Equality) , 이는 표현식 a == b 의 값이며
  • 동치성(Equivalence) , 이는 표현식 ! ( a < b ) && ! ( b < a ) 의 값입니다.

결함 보고서

다음의 동작 변경 결함 보고서는 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 2114
( P2167R3 )
C++98 bool 변환 가능성이 구현들의 기대를 반영하기에 너무 약함 요구 사항 강화됨

참고 항목

순서 관계를 설정하는 BinaryPredicate
(명명된 요구사항)
relation 이 엄격한 약순서를 부과함을 명시
(컨셉)