Namespaces
Variants

std::ranges:: less

From cppreference.net
Utilities library
Function objects
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
헤더 파일에 정의됨 <functional>
struct less ;
(C++20부터)

비교를 수행하기 위한 함수 객체입니다. 함수 호출 연산자의 매개변수 유형을 인수로부터 추론합니다(반환 유형은 제외).

목차

중첩 타입

중첩 타입 정의
is_transparent unspecified

멤버 함수

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

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

template < class T, class U >
constexpr bool operator ( ) ( T && t, U && u ) const ;

다음 표현식 std:: forward < T > ( t ) < std:: forward < U > ( u ) expr 로 가정할 때:

  • 변환된 t 가 변환된 u (둘 다 P 타입)보다 구현 정의 포인터 엄격 총순서 에서 앞서면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
  • 만약 T 에서 P 로의 변환 시퀀스 또는 U 에서 P 로의 변환 시퀀스가 동등성 보존 을 만족하지 않으면 동작은 정의되지 않습니다.
  • 그 외의 경우:
  • expr 의 결과를 반환합니다.
  • 만약 std:: totally_ordered_with < T, U > 가 모델링되지 않으면 동작은 정의되지 않습니다.

이 오버로드는 std:: totally_ordered_with < T, U > 가 만족될 때만 오버로드 해결에 참여합니다.

만약 T 타입의 표현식 expr1 U 타입의 표현식 expr2 가 존재하여, expr1 expr2 의 비교 결과가 엄격 총순서 를 위반하면(규칙은 아래에 정의됨) 동작은 정의되지 않습니다.

expr1 expr2 의 비교 결과는 다음 표현식들 중 정확히 하나 true 일 때만 엄격 총순서를 따릅니다:

참고 사항

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

예제

결함 보고서

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

DR 적용 대상 게시된 동작 올바른 동작
LWG 3530 C++20 포인터 비교 시 구문적 검사가 완화됨 의미론적 요구사항만 완화됨

참고 항목

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