Namespaces
Variants

std::ranges::less

cppreference.net에서
 
 
유틸리티 라이브러리
일반 유틸리티
관계 연산자 (C++20에서 폐기됨)
정수 비교 함수
(C++20)(C++20)(C++20)    
(C++20)
스왑 및 타입 연산
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
공통 어휘 타입
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
함수 객체
함수 호출
(C++17)(C++23)
항등 함수 객체
(C++20)
투명 연산자 래퍼
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

이전 바인더 및 어댑터
(C++17까지*)
(C++17까지*)
(C++17까지*)
(C++17까지*)  
(C++17까지*)
(C++17까지*)(C++17까지*)(C++17까지*)(C++17까지*)
(C++20까지*)
(C++20까지*)
(C++17까지*)(C++17까지*)
(C++17까지*)(C++17까지*)

(C++17까지*)
(C++17까지*)(C++17까지*)(C++17까지*)(C++17까지*)
(C++20까지*)
(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
(클래스 템플릿)