std::experimental::ranges:: less
|
template
<
class
T
=
void
>
requires StrictTotallyOrdered
<
T
>
||
|
(ranges TS) | |
|
template
<>
struct less < void > ; |
(ranges TS) | |
用于执行比较的函数对象。主模板在类型
T
的常量左值上调用
operator
<
。特化版本
less<void>
会从参数推导函数调用运算符的参数类型(但不推导返回类型)。
所有
less
的特化都是
Semiregular
的。
目录 |
成员类型
| 成员类型 | 定义 |
is_transparent
(仅属于
less<void>
特化的成员)
|
/* 未指定 */ |
成员函数
|
operator()
|
检查第一个参数是否
小于
第二个参数
(公开成员函数) |
std::experimental::ranges::less:: operator()
|
constexpr
bool
operator
(
)
(
const
T
&
x,
const
T
&
y
)
const
;
|
(1) |
(仅主模板
less<T>
的成员)
|
|
template
<
class
T,
class
U
>
requires StrictTotallyOrderedWith
<
T, U
>
||
|
(2) |
(仅特化模板
less<void>
的成员)
|
t
和
u
。等价于
return
std::
forward
<
T
>
(
t
)
<
std::
forward
<
U
>
(
u
)
;
,除非该表达式解析为调用内置的
operator
<
比较指针。
当对
(1)
或
(2)
的调用会触发比较类型为
P
的指针的内置运算符时,结果按以下方式确定:
-
如果第一个参数的(可能转换后的)值在实现定义的、针对类型
P的所有指针值的严格全序中先于第二个参数的(可能转换后的)值,则返回 true 。该严格全序与内置运算符<、>、<=和>=所施加的偏序一致。 - 否则,返回 false 。
除非从
T
和
U
到
P
的转换序列是保等性的(见下文),否则行为未定义。
等值保持性
如果一个表达式在给定相等输入时产生相等输出,则它是 保等性的 。
- 表达式的输入包括其操作数。
- 表达式的输出包括其结果以及被该表达式修改的所有操作数(如果有)。
每个要求保等性的表达式还要求是 稳定的 :在没有对输入对象进行显式干预修改的情况下,对此类表达式进行两次求值,若输入对象相同,则必须产生相等的输出。
注释
与
std::less
不同,
ranges::less
要求所有六个比较运算符
<
,
<=
,
>
,
>=
,
==
和
!=
必须有效(通过
StrictTotallyOrdered
和
StrictTotallyOrderedWith
约束实现)。
示例
|
本节内容不完整
原因:缺少示例 |
参见
|
实现
x
<
y
的函数对象
(类模板) |