名前空間
変種
操作

std::experimental::ranges::ConvertibleTo

From cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
コンセプトライブラリ
中核言語のコンセプト
ConvertibleTo
                              
オブジェクトのコンセプト
                              
                              
比較のコンセプト
呼び出し可能オブジェクトのコンセプト
                                        
                              
URNGコンセプト
 
template< class From, class To >

concept bool ConvertibleTo =
    std::is_convertible<From, To>::value &&
    requires(From (&f)()) {
        static_cast<To>(f());

    };
(ranges TS)

concept ConvertibleTo<From, To> は、From で指定された型と値カテゴリを持つ式が、To 型に暗黙的および明示的に変換可能であり、かつ、その両方の変換形式が同等であることを指定します。

具体的には、発明された関数 To test(From (&f)()) { return f(); } と、式 f() が等価保存(Equality-preserving)(下記参照)であるような型 From () の関数 `f` が与えられた場合にのみ、ConvertibleTo<From, To> は満たされます。

  • 以下のいずれかです。
    • To がオブジェクト型でも参照型でもない場合、または
    • static_cast<To>(f())test(f) と等しく、かつ
  • 以下のいずれかが真である場合。
    • From がオブジェクト型への参照型ではない場合、または
    • From が非 const 修飾の型への右辺値参照であり、上記いずれかの式により、f() が参照するオブジェクトの状態が有効だが未指定になる場合。
    • 上記いずれかの式によって `f()` が参照するオブジェクトが変更されない場合。

ConvertibleTo<From, To>std::is_convertible<From, To>::value の間に、包含関係があるとは限りません。

[編集] 等価性保持

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

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

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

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

[編集] 関連項目

ある型が他の型に変換可能であるかをチェックする
(クラステンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)