std::experimental::ranges::equal_to
來自 cppreference.com
< cpp | experimental | ranges
定義於標頭檔案 <experimental/ranges/functional> |
||
template< class T = void > requires EqualityComparable<T> || |
(ranges TS) | |
template<> struct equal_to<void>; |
(ranges TS) | |
用於執行比較的函式物件。主模板在型別為 T
的 const 左值上呼叫 operator ==。特化 equal_to<void>
從引數推導函式呼叫運算子的引數型別(但不是返回型別)。
所有 equal_to
的特化都是 Semiregular
。
目錄 |
[編輯] 成員型別
成員型別 | 定義 |
is_transparent (僅屬於 equal_to<void> 特化成員) |
/* 未指定 */ |
[編輯] 成員函式
operator() |
檢查引數是否“相等” (公開成員函式) |
std::experimental::ranges::equal_to::operator()
constexpr bool operator()(const T& x, const T& y) const; |
(1) | (僅屬於主 equal_to<T> 模板成員) |
template< class T, class U > requires EqualityComparableWith<T, U> || |
(2) | (僅屬於 equal_to<void> 特化成員) |
當呼叫 (1) 或 (2) 將呼叫比較型別 P
的指標的內建運算子時,結果將按以下方式確定:
- 如果第一個引數的(可能已轉換的)值和第二個引數的(可能已轉換的)值之一在型別
P
的所有指標值的實現定義的嚴格全序中位於另一個之前,則返回 false。此嚴格全序與內建運算子<
、>
、<=
和>=
施加的偏序一致。 - 否則(兩者均未位於另一個之前),返回 true。
除非從 T
和 U
到 P
的轉換序列都是相等性保持的(見下文),否則行為是未定義的。
[編輯] 相等性保持
如果一個表示式在給定相等輸入時產生相等輸出,則稱其為保持相等性。
- 表示式的輸入由其運算元組成。
- 表示式的輸出由其結果以及被表示式修改的所有運算元(如果有的話)組成。
所有要求保持相等性的表示式還必須是穩定的:在沒有顯式介入修改輸入物件的情況下,對具有相同輸入物件的表示式的兩次求值必須產生相等的輸出。
[編輯] 注意
與 std::equal_to 不同,ranges::equal_to
要求 ==
和 !=
均有效(透過 EqualityComparable
和 EqualityComparableWith
約束)。
[編輯] 示例
本節不完整 原因:無示例 |
[編輯] 另見
實現 x == y 的函式物件 (類模板) |