std::experimental::ranges::less
來自 cppreference.com
< cpp | experimental | ranges
定義於標頭檔案 <experimental/ranges/functional> |
||
template< class T = void > requires StrictTotallyOrdered<T> || |
(ranges TS) | |
template<> struct less<void>; |
(ranges TS) | |
用於執行比較的函式物件。主模板在型別為 `T` 的 const 左值上呼叫 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>` 特化的成員) |
1) 比較 `x` 和 `y`。等價於 return ranges::less<>{}(x, y);。
2) 比較 `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 的函式物件 (類模板) |