名前空間
変種
操作

std::experimental::ranges::WeaklyEqualityComparableWith

From cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
コンセプトライブラリ
中核言語のコンセプト
                              
オブジェクトのコンセプト
                              
                              
比較のコンセプト
WeaklyEqualityComparableWith

呼び出し可能オブジェクトのコンセプト
                                        
                              
URNGコンセプト
 
template< class T, class U >

concept bool WeaklyEqualityComparableWith =
    requires(const std::remove_reference_t<T>& t,
             const std::remove_reference_t<U>& u) {
        { t == u } -> Boolean&&;
        { t != u } -> Boolean&&;
        { u == t } -> Boolean&&;
        { u != t } -> Boolean&&;

    };
(ranges TS)

コンセプトWeaklyEqualityComparableWith<T, U>は、型Tのオブジェクトと型Uのオブジェクトが、互いに(どちらの順序でも)==および!=を使用して等価性を比較でき、比較結果が一貫していることを指定します。より正式には、WeaklyEqualityComparableWith<T, U>は、以下が与えられた場合にのみ満たされます。

以下の条件が真である。

  • t == uu == tt != uu != tが同じドメインを持つこと。
  • bool(u == t) == bool(t == u);
  • bool(t != u) == !bool(t == u)であること。および
  • bool(u != t) == bool(t != u).

[編集] 等価性保持

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

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

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

特に断りがない限り、requires-expression で使用されるすべての式は、等価性を保持し、安定であることが要求され、式の評価は定数でないオペランドのみを変更できます。定数のオペランドは変更してはいけません。

[編集] 暗黙的な式バリエーション

ある定数左辺値オペランドに対して非変更的な式を使用する requires-expression は、明示的に異なる意味で要求されていない限り、そのオペランドに対して非定数左辺値または(定数であるか否かにかかわらず)右辺値を受け入れる、その式の追加のバリエーションも暗黙的に要求します。これらの 暗黙的な式バリエーション は、宣言された式の意味要件と同じ要件を満たさなければなりません。実装がこれらのバリエーションの構文をどの程度検証するかは未規定です。

[編集] 関連項目

演算子==が同値関係であることを規定する
(concept) [編集]
English 日本語 中文(简体) 中文(繁體)