std:: less
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Old binders and adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
헤더 파일에 정의됨
<functional>
|
||
|
template
<
class
T
>
struct less ; |
(C++14 이전) | |
|
template
<
class
T
=
void
>
struct less ; |
(C++14 이후) | |
비교 연산을 수행하는 함수 객체입니다. 기본 템플릿은 타입
T
에 대해
operator
<
를 호출합니다.
목차 |
특수화
|
(C++14)
|
매개변수 및 반환 타입을 추론하는
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
를 구현하는 함수 객체
(클래스 템플릿) |
|
|
(C++20)
|
x
<
y
를 구현하는 제약된 함수 객체
(클래스) |