名前空間
変種
操作

std::experimental::ranges::greater

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

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

struct greater;
(ranges TS)
template<>
struct greater<void>;
(ranges TS)

比較を行う関数オブジェクトです。プライマリテンプレートは、型Tのconst lvalueに対して、引数の順序を反転させてoperator<を呼び出します。特殊化greater<void>は、関数呼び出し演算子のパラメータ型を引数から推論します(ただし、戻り値の型は推論しません)。

greaterのすべての特殊化はSemiregularです。

目次

[edit] メンバー型

メンバ型 定義
is_transparent greater<void>特殊化のみのメンバー) /* 不明 */

[edit] メンバー関数

operator()
最初の引数が2番目の引数より大きいかどうかをチェックします。
(public member function)

std::experimental::ranges::greater::operator()

constexpr bool operator()(const T& x, const T& y) const;
(1) (プライマリgreater<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) greater<void>特殊化のみのメンバー)
1) xyを比較します。return ranges::less<>{}(y, x);に相当します。
2) tuを比較します。return ranges::less<>{}(std::forward<U>(u), std::forward<T>(t));に相当します。

[edit] 注記

std::greaterとは異なり、ranges::greaterは、StrictTotallyOrderedおよびStrictTotallyOrderedWith制約を通じて、6つの比較演算子<<=>>===!=すべてが有効であることを要求し、完全にranges::lessで定義されています。しかし、これらの概念は比較演算子の結果の一貫性を要求するため、実装は直接operator>を使用しても構いません。

[edit]

[edit] 関連項目

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