std::experimental::ranges::equal_to
| Defined in header <experimental/ranges/functional> |
||
| template< class T = void > 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() |
引数が等しいかどうかをチェックします。 (public member function) |
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 > EqualityComparableWith<T, U> または |
(2) | (equal_to<void> 特殊化のみのメンバ) |
t と u を比較します。return std::forward<T>(t) == std::forward<U>(u); と同等です。ただし、その式がポインタを比較する組み込み operator == の呼び出しに解決される場合を除きます。(1) または (2) の呼び出しが型 P のポインタを比較する組み込み演算子を呼び出す場合、結果は代わりに次のように決定されます。
- 最初の引数の(変換される可能性のある)値と、2番目の引数の(変換される可能性のある)値が、型
Pのすべてのポインタ値に対する実装定義の厳密な全順序において、互いの前に来る場合、falseを返します。この厳密な全順序は、組み込み演算子<、>、<=、および>=によって課される半順序と一致します。 - それ以外の場合(どちらも他方の前に来ない場合)、
trueを返します。
T および U から P への変換シーケンスが等価性を保持する(以下を参照)場合を除き、動作は未定義です。
[編集] 等価性保持
式が**等価性保持**であるとは、等しい入力に対して等しい出力を生成することを意味します。
- 式の入力は、そのオペランドで構成されます。
- 式の出力は、その結果と、式によって変更されたすべてのオペランド(存在する場合)で構成されます。
等価性保持が要求されるすべての式は、さらに**安定**である必要があります。同じ入力オブジェクトでそのような式の2回の評価は、これらの入力オブジェクトの明示的な介入的な変更がない限り、等しい出力を持ちます。
[編集] 注記
std::equal_to とは異なり、ranges::equal_to は == と != の両方が有効であることを要求します(EqualityComparable および EqualityComparableWith 制約経由)。
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 関連項目
| x == y を実装する関数オブジェクト (クラステンプレート) |