名前空間
変種
操作

std::experimental::ranges::equal_to

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

    EqualityComparable<T> または
             Same<T, void> ||
             /* 2つの const T 左辺値に対する == は、ポインタを比較する組み込み演算子を呼び出します */

struct equal_to;
(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> または
             /* std::declval<T>() == std::declval<U>() は以下に解決されます
                a built-in operator comparing pointers */

constexpr bool operator()(T&& t, U&& u) const;
(2) equal_to<void> 特殊化のみのメンバ)
1) xy を比較します。return ranges::equal_to<>{}(x, y); と同等です。
2) tu を比較します。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 を実装する関数オブジェクト
(クラステンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)