ranges_equal_to
ranges_equal_to (동등성 비교 함수 객체)
이 페이지는 C++20에서 도입된 std::ranges::equal_to 함수 객체에 대해 다루어요. 이 함수 객체는 두 인자가 같은지 비교하는 데 사용되며, 인자의 타입은 호출 시점에 추론돼요. std::equal_to와 달리 != 연산자의 유효성과 인자 타입의 동질 비교 가능성까지 요구해요.
출처: cppreference
본문
중첩 타입
| 중첩 타입 | 정의 |
|---|---|
| is_transparent | 불명 (unspecified) |
멤버 함수
| 멤버 함수 | 설명 |
|---|---|
| operator() | 인자가 같은지 확인해요 (공개 멤버 함수) |
std::ranges::equal_to::operator()
template < class T , class U > constexpr bool operator ()( T && t , U && u ) const ;
주어진 표현식 std :: forward < T > ( t ) == std :: forward < U > ( u )를 expr이라고 할 때:
- expr이 포인터를 비교하는 내장
operator ==호출로 이어진다면,t와u의 복합 포인터 타입을P라고 할 때:- 변환된 두 포인터(타입
P)에 대해, 한 포인터가 구현 정의된 포인터 전체 순서에서 다른 포인터보다 앞선다면false를 반환하고, 그렇지 않으면true를 반환해요.T에서P로의 변환 시퀀스 또는U에서P로의 변환 시퀀스가 동등성을 보존하지 않는다면, 동작은 정의되지 않아요.
- 변환된 두 포인터(타입
- 그 외의 경우:
expr의 결과를 반환해요.std :: equality_comparable_with < T , U >가 모델링되지 않는다면, 동작은 정의되지 않아요.
이 오버로드는 std :: equality_comparable_with < T , U >가 충족될 때만 오버로드 해석에 참여해요.
참고 사항
std::equal_to와 비교했을 때, std::ranges::equal_to는 추가로 !=가 유효해야 하고, 두 인자 타입 모두 (동질적으로) 자기 자신과 비교 가능해야 해요 (equality_comparable_with 제약을 통해).
예제
이 섹션은 불완전해요. 이유: 예제 없음
결함 보고서
다음 동작 변경 결함 보고서는 이전에 발표된 C++ 표준에 소급 적용되었어요.
| DR | 적용 대상 | 발표된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 3530 | C++20 | 포인터 비교 시 구문 검사가 완화되었어요 | 의미론적 요구 사항만 완화돼요 |
같이 보기
| equal_to | x == y를 구현하는 함수 객체 (클래스 템플릿) [편집] |
|---|