Namespaces
Variants

std::experimental::ranges:: not_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 not_equal_to ;
(ranges TS)
template <>
struct not_equal_to < void > ;
(ranges TS)

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

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

목차

멤버 타입

멤버 타입 정의
is_transparent ( not_equal_to<void> 특수화의 멤버에만 해당) /* 지정되지 않음 */

멤버 함수

operator()
인수가 서로 다른지 확인합니다
(public member function)

std::experimental::ranges::not_equal_to:: operator()

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

requires EqualityComparableWith < T, U > ||
/* std::declval<T>() == std::declval<U>() resolves to
a built-in operator comparing pointers */

constexpr bool operator ( ) ( T && t, U && u ) const ;
(2) ( not_equal_to<void> 특수화의 멤버만)
1) x y 를 비교합니다. return ! ranges:: equal_to <> { } ( x, y ) ; 와 동일합니다.
2) t u 를 비교합니다. return ! ranges:: equal_to <> { } ( std:: forward < T > ( t ) , std:: forward < U > ( u ) ) ; 와 동일합니다.

참고 사항

std::not_equal_to 와 달리, ranges::not_equal_to == != 모두가 유효해야 합니다( EqualityComparable EqualityComparableWith 제약 조건을 통해). 그리고 ranges::equal_to 를 기준으로 완전히 정의됩니다. 그러나 구현은 operator ! = 를 직접 사용할 수 있습니다. 왜냐하면 이러한 개념들은 == != 의 결과가 일관되도록 요구하기 때문입니다.

예제

참고 항목

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