Namespaces
Variants

std::experimental::ranges:: less

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

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

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

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

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

목차

멤버 타입

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

멤버 함수

operator()
첫 번째 인수가 두 번째 인수보다 작은지 확인합니다
(public member function)

std::experimental::ranges::less:: operator()

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

requires StrictTotallyOrderedWith < 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) ( less<void> 특수화의 멤버 전용)
1) x y 를 비교합니다. return ranges:: less <> { } ( x, y ) ; 와 동등합니다.
2) t u 를 비교합니다. return std:: forward < T > ( t ) < std:: forward < U > ( u ) ; 와 동등하지만, 해당 표현식이 포인터를 비교하는 내장 operator < 호출로 해결되는 경우는 제외됩니다.

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

  • 첫 번째 인자의 (변환된) 값이 P 타입의 모든 포인터 값에 대한 구현 정의 엄격 총 순서(strict total ordering)에서 두 번째 인자의 (변환된) 값보다 앞서는 경우 true 를 반환합니다. 이 엄격 총 순서는 내장 연산자 < , > , <= , >= 에 의해 부과된 부분 순서와 일관됩니다.
  • 그렇지 않으면 false 를 반환합니다.

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

등식 보존(Equality preservation)

표현식이 동일한 입력이 주어졌을 때 동일한 출력을 생성하면 등식 보존 입니다.

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

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

참고 사항

std::less 와 달리, ranges::less 는 여섯 가지 비교 연산자 < , <= , > , >= , == != 가 모두 유효해야 합니다 ( StrictTotallyOrdered StrictTotallyOrderedWith 제약 조건을 통해).

예제

참고 항목

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