Namespaces
Variants

std::experimental::ranges:: equal_to

From cppreference.net
헤더 파일에 정의됨 <experimental/ranges/functional>
template < class T = void >

requires EqualityComparable < T > ||
Same < T, void > ||
/* == on two const T lvalues invokes a built-in operator comparing pointers */

struct equal_to ;
(ranges TS)
template <>
struct equal_to < void > ;
(ranges TS)

비교 연산을 수행하는 함수 객체입니다. 기본 템플릿은 타입 T 의 const lvalue에 대해 operator == 를 호출합니다. 특수화 equal_to<void> 는 함수 호출 연산자의 매개변수 타입을 인자로부터 추론합니다(반환 타입은 제외).

equal_to 의 모든 특수화는 Semiregular 입니다.

목차

멤버 타입

멤버 타입 정의
is_transparent ( equal_to<void> 특수화의 멤버로만 존재) /* 지정되지 않음 */

멤버 함수

operator()
인수가 동일한지 확인합니다
(public member function)

std::experimental::ranges::equal_to:: operator()

constexpr bool operator ( ) ( const T & x, const T & y ) const ;
(1) (기본 equal_to<T> 템플릿의 멤버 전용)
template < class T, class U >

requires EqualityComparableWith < T, U > ||
/* std::declval<T>() == std::declval<U>()가
포인터를 비교하는 내장 연산자로 해결됨 */

constexpr bool operator ( ) ( T && t, U && u ) const ;
(2) ( equal_to<void> 특수화의 멤버 전용)
1) x y 를 비교합니다. return ranges:: equal_to <> { } ( x, y ) ; 와 동등합니다.
2) t u 를 비교합니다. 해당 표현식이 포인터를 비교하는 내장 operator == 호출로 해결되는 경우를 제외하고 return std:: forward < T > ( t ) == std:: forward < U > ( u ) ; 와 동등합니다.

(1) 또는 (2) 호출이 P 타입의 포인터를 비교하는 내장 연산자를 호출할 경우, 결과는 다음과 같이 결정됩니다:

  • 첫 번째 인자의 (변환된) 값과 두 번째 인자의 (변환된) 값 중 하나가 P 타입의 모든 포인터 값에 대한 구현 정의 엄격 전체 순서에서 다른 하나보다 앞서는 경우 false 를 반환합니다. 이 엄격 전체 순서는 내장 연산자 < , > , <= , >= 에 의해 부과된 부분 순서와 일관됩니다.
  • 그렇지 않은 경우 (어느 것도 다른 것을 앞서지 않음), true 를 반환합니다.

T U 에서 P 로의 변환 시퀀스가 모두 등식 보존(equality-preserving)인 경우가 아니면 동작은 정의되지 않습니다 (아래 참조).

등식 보존(Equality preservation)

표현식은 동일한 입력이 주어졌을 때 동일한 출력을 결과로 내면 등식 보존 입니다.

  • 표현식의 입력은 해당 피연산자로 구성됩니다.
  • 표현식의 출력은 해당 결과와 표현식에 의해 수정된 모든 피연산자(있는 경우)로 구성됩니다.

등식 보존이 요구되는 모든 표현식은 추가로 안정적(stable) 이어야 합니다: 동일한 입력 객체로 이러한 표현식을 두 번 평가할 때 해당 입력 객체에 대한 명시적인 중간 수정이 없으면 동일한 출력을 가져야 합니다.

참고 사항

std::equal_to 와 달리, ranges::equal_to == != 모두가 유효해야 합니다 ( EqualityComparable EqualityComparableWith 제약 조건을 통해).

예제

참고 항목

x == y 를 구현하는 함수 객체
(클래스 템플릿)