名稱空間
變體
操作

std::ranges::less

來自 cppreference.com
 
 
 
函式物件
函式呼叫
(C++17)(C++23)
恆等函式物件
(C++20)
透明運算子包裝器
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(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>
struct less;
(C++20 起)

用於執行比較的函式物件。從引數推導函式呼叫運算子的引數型別(但不推導返回型別)。

目錄

[編輯] 巢狀型別

巢狀型別 定義
is_transparent 未指定

[編輯] 成員函式

operator()
檢查第一個引數是否小於第二個引數
(公開成員函式)

std::ranges::less::operator()

template< class T, class U >
constexpr bool operator()( T&& t, U&& u ) const;

給定表示式 std::forward<T>(t) < std::forward<U>(u) 作為 expr

  • 如果轉換後的 t指標的實現定義嚴格全序中先於轉換後的 u(兩者都為型別 P),返回 true,否則返回 false
  • 如果從 TP 的轉換序列或從 UP 的轉換序列不是保持相等的,則行為未定義。
  • 否則

此過載僅在滿足 std::totally_ordered_with<T, U> 時才參與過載決議。

如果存在型別為 T 的表示式 expr1 和型別為 U 的表示式 expr2,使得 expr1expr2 的比較結果違反嚴格全序(規則定義如下),則行為未定義。

只有當以下表達式中恰好一個true 時,expr1expr2 的比較結果才遵循嚴格全序:

[編輯] 注意

std::less 不同,std::ranges::less 要求所有六個比較運算子 <<=>>===!= 都是有效的(透過 totally_ordered_with 約束)。

[編輯] 示例

[編輯] 缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 3530 C++20 比較指標時放寬了語法檢查 僅放寬了語義要求

[編輯] 參閱

實現 x < y 的函式物件
(類模板) [編輯]