名前空間
変種
操作

std::experimental::ranges::less

From cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
汎用ユーティリティライブラリ
ユーティリティコンポーネント
関数オブジェクト
less
メタプログラミングと型特性
タグ付きペアとタプル
                          
タグ指定子
                                      
                          
 
template< class T = void >

    requires StrictTotallyOrdered<T> ||
             Same<T, void> ||
             /* < on two const T lvalues invokes a built-in operator comparing pointers */

struct less;
(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> ||
             /* std::declval<T>() < std::declval<U>() resolves to
                a built-in operator comparing pointers */

constexpr bool operator()(T&& t, U&& u) const;
(2) (less<void>特殊化のメンバのみ)
1) xyを比較します。これは、return ranges::less<>{}(x, y);と同等です。
2) tuを比較します。これは、return std::forward<T>(t) < std::forward<U>(u);と同等ですが、その式がポインタを比較する組み込みのoperator<の呼び出しに解決される場合を除きます。

(1)または(2)の呼び出しが型Pのポインタを比較する組み込み演算子を呼び出す場合、結果は次のように決定されます。

  • 最初の引数(変換される場合がある)の値が、型Pのすべてのポインタ値に対する実装定義の厳密な全順序において、2番目の引数(変換される場合がある)の値よりも前に来る場合にtrueを返します。この厳密な全順序は、組み込み演算子<><=、および>=によって課される半順序と一致します。
  • それ以外の場合は、falseを返します。

TUからPへの変換シーケンスが等価性保持である場合(以下参照)を除き、動作は未定義です。

[編集] 等価性保持

式が**等価性保持**であるとは、等しい入力に対して等しい出力を生成することを意味します。

  • 式の入力は、そのオペランドで構成されます。
  • 式の出力は、その結果と、式によって変更されたすべてのオペランド(存在する場合)で構成されます。

等価性保持が要求されるすべての式は、さらに**安定**である必要があります。同じ入力オブジェクトでそのような式の2回の評価は、これらの入力オブジェクトの明示的な介入的な変更がない限り、等しい出力を持ちます。

[編集] 注記

std::lessとは異なり、ranges::lessは、StrictTotallyOrderedおよびStrictTotallyOrderedWith制約を通じて、6つの比較演算子<<=>>===、および!=すべてが有効であることを要求します。

[編集]

[編集] 関連項目

x < y を実装する関数オブジェクト
(クラステンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)