名前空間
変種
操作

std::experimental::ranges::not_equal_to

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

    requires EqualityComparable<T> ||
             Same<T, void> ||
             /* == を2つの const T 左辺値に適用すると、ポインタを比較する組み込み演算子が呼び出されます */

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

比較を実行するための関数オブジェクト。プライマリテンプレートは、型Tのconst左辺値に対する operator == を呼び出し、その結果を否定します。特殊化not_equal_to<void>は、関数呼び出し演算子のパラメータ型を引数から推論します(ただし、戻り値の型は推論しません)。

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

目次

[編集] メンバー型

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

[編集] メンバー関数

operator()
引数が等しくないかどうかをチェックします
(public member function)

std::experimental::ranges::not_equal_to::operator()

constexpr bool operator()(const T& x, const T& y) const;
(1) (プライマリnot_equal_to<T>テンプレートのメンバーのみ)
template< class T, class U >

    requires EqualityComparableWith<T, U> ||
             /* std::declval<T>() == std::declval<U>() が解決されると
                a built-in operator comparing pointers */

constexpr bool operator()(T&& t, U&& u) const;
(2) (not_equal_to<void> 特殊化のメンバーのみ)
1) xy を比較します。 return !ranges::equal_to<>{}(x, y); と同等です。
2) tu を比較します。 return !ranges::equal_to<>{}(std::forward<T>(t), std::forward<U>(u)); と同等です。

[編集] 注記

std::not_equal_to とは異なり、ranges::not_equal_to==!= の両方が有効であること (EqualityComparable および EqualityComparableWith 制約経由) を要求し、完全に ranges::equal_to で定義されています。しかし、これらの概念は ==!= の結果が整合していることを要求するため、実装は直接 operator!= を使用しても構いません。

[編集]

[編集] 関連

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