Namespaces
Variants

std::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>
template< class T >
struct less;
(C++14까지)
template< class T = void >
struct less;
(C++14부터)

비교를 수행하기 위한 함수 객체. 기본 템플릿은 operator< 타입 T에 대해 호출합니다.

특수화

매개변수 및 반환 타입을 추론하는 x < y 연산을 구현하는 함수 객체
(클래스 템플릿 특수화)

멤버 타입

유형 정의
result_type (C++17에서 사용 중단됨) (C++20에서 제거됨) bool
first_argument_type (C++17에서 사용 중단됨) (C++20에서 제거됨) T
second_argument_type (C++17에서 사용 중단됨) (C++20에서 제거됨) T

이 멤버 타입들은 공개적으로 상속받아 얻어집니다 std:: binary_function < T, T, bool > .

(C++11 이전)

멤버 함수

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

std::less:: operator()

bool operator ( ) ( const T & lhs, const T & rhs ) const ;
(constexpr since C++14)

lhs 가 rhs 보다 작은지 확인합니다.

매개변수

lhs, rhs - 비교할 값들

반환 값

lhs < rhs .

T 가 포인터 타입인 경우, 결과는 포인터에 대한 구현 정의 엄격한 전체 순서 와 일치합니다.

예외

구현 정의 예외를 throw할 수 있습니다.

가능한 구현

constexpr bool operator()(const T& lhs, const T& rhs) const 
{
    return lhs < rhs; // assumes that the implementation handles pointer total order
}

예제

#include <functional>
template<typename A, typename B, typename C = std::less<>>
constexpr bool fun(A a, B b, C cmp = C{})
{
    return cmp(a, b);
}
static_assert(fun(1, 2) == true);
static_assert(fun(1.0, 1) == false);
static_assert(fun(1, 2.0) == true);
static_assert(std::less<int>{}(5, 5.6) == false);   // 5 < 5 (경고: 암시적 변환)
static_assert(std::less<double>{}(5, 5.6) == true); // 5.0 < 5.6
static_assert(std::less<int>{}(5.6, 5.7) == false); // 5 < 5 (경고: 암시적 변환)
static_assert(std::less{}(5, 5.6) == true);         // less<void>: 5.0 < 5.6
int main() {}

결함 보고서

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

DR 적용 대상 게시된 동작 올바른 동작
LWG 2562 C++98 포인터 전체 순서가 일관되지 않을 수 있음 일관성 보장됨

참고 항목

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