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