# std::experimental::ranges::less_equal

< cpp‎ | experimental‎ | ranges

定义于头文件 `<experimental/ranges/functional>` |  |
template< class T = void > requires ranges::StrictTotallyOrdered<T> || ranges::Same<T, void> || /* 二个 const T 左值上的 < 调用比较指针的内建运算符 */ struct less_equal; |  | (范围 TS)
template <> struct less_equal<void>; |  | (范围 TS)

进行比较的函数对象。初等模板以参数倒序调用 `T` 类型 const 左值上的 operator< 并对结果取反。特化 `less_equal<void>` 从实参推导函数调用运算符的形参类型（但非返回类型）。

`less_equal` 的所有特化均为 `Semiregular` 。

### 成员类型

成员类型 | 定义
`is_transparent` (仅为 `less_equal<void>` 特化的成员) | /* 未指定 */

### 成员函数

operator() | 检查第一参数是否小于或等于第二个 (公开成员函数)

## std::experimental::ranges::less_equal::operator()

constexpr bool operator()(const T& x, const T& y) const; | (1) | (仅为初等 `less_equal<T>` 模板的成员)
template< class T, class U > requires ranges::StrictTotallyOrderedWith<T, U> || /* std::declval<T>() < std::declval<U>() 解析成比较指针的内建运算符 */ constexpr bool operator()(T&& t, U&& u) const; | (2) | (仅为 `less_equal<void>` 特化的成员)

1) 比较 `x` 与 `y` 。等价于 return !ranges::less<>{}(y, x) ；
2) 比较 `t` 与 `u` 。等价于 return !ranges::less<>{}(std::forward<U>(u), std::forward<T>(t)); 。

### 注意

不同于 std::less_equal ， `ranges::less_equal` 要求六个比较运算符 `<` 、 `<=` 、 `>` 、 `>=` 、 `==` 及 `!=` 均合法（通过 `StrictTotallyOrdered` 与 `StrictTotallyOrderedWith` 制约）并且完全以 ranges::less 定义。然而实现可以自由地直接用 operator<= ，因为这些概念要求比较运算符的结果一致。

### 示例

| 本节未完成 原因：暂无示例

### 参阅

less_equal | 实现 x <= y 的函数对象 (类模板)