std::less<void>

来自cppreference.com
< cpp‎ | utility‎ | functional
 
 
工具库
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)
(C++20)
swap 与类型运算
(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++17)
 
函数对象
函数包装
(C++11)
(C++11)
部分函数应用
(C++11)
(C++20)(C++23)
函数调用
(C++17)(C++23)
恒等函数对象
(C++20)
引用包装
(C++11)(C++11)
通透运算符包装
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
less<>
(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 less<void>;
(C++14 起)

std::less<>std::less 的特化,拥有待推导的参数和返回类型。

实现定义的指针上的严格全序

若参数间的 < 运算符调用指针的内建比较运算符,则函数调用运算符产生实现定义的指针上的严格全序,即使内建的 < 运算符不如此。

实现定义的严格全序与比较运算符( <=> (C++20 起)<><=>= )所施加的偏序一致,并在下列标准函数对象间一致:

(C++20 起)

成员类型

成员类型 定义
is_transparent /* 未指定 */

成员函数

operator()
测试 lhs 是否比较小于 rhs
(公开成员函数)

std::less<>::operator()

template< class T, class U>

constexpr auto operator()( T&& lhs, U&& rhs ) const

  -> decltype(std::forward<T>(lhs) < std::forward<U>(rhs));

返回 std::forward<T>(lhs) < std::forward<U>(rhs) 的结果。

参数

lhs, rhs - 要比较的值

返回值

std::forward<T>(lhs) < std::forward<U>(rhs) 的结果。

若两个实参的比较解析到指针类型的内建比较运算符,则在转换两个实参到指针后用实现定义的严格全序进行比较。

异常

可能会抛出由实现定义的异常。

注解

成员类型 is_transparent 指示调用方,此函数对象是一个通透函数对象:它接受任意类型的参数并使用完美转发,这在将函数对象在多种语境中,或以右值参数使用时,避免不需要的复制和转换。特别是,诸如 std::set::findstd::set::lower_bound 的模板函数在其 Compare 类型上使用此类型。

示例