tagged_msg

[flow_graph.tagged_msg]

タグとメッセージで構成されるクラス・テンプレート。メッセージは定義タイプの 1 つにできる値です。


// <oneapi/tbb/flow_graph.h> ヘッダーで定義  

namespace oneapi { 
namespace tbb { 
namespace flow { 

    template<typename TagType, typename...TN> 
    class tagged_msg { 
    public: 
        template<typename T, typename R> 
        tagged_msg(T const &index, R const &val); 

        TagType tag() const; 

        template<typename V> 
        const V& cast_to() const; 

        template<typename V> 
        bool is_a() const; 
 
   }; 

} // namespace flow 
} // namespace tbb 
} // namespace oneapi

要件:

  • TN テンプレート・パラメーター・パックのすべてのタイプは、[copyconstructible] ISO C++ 標準の CopyConstructible 要件を満たす必要があります。

  • TagType タイプは符号なし整数タイプでなければなりません。

tagged_msg テンプレート・クラスは、タイプが実行時に決定されるメッセージ用です。TN タイプのメッセージは、TagType タイプでタグ付けされます。タグはメッセージを識別するのに使用できます。フローグラフでは、tagged_msgindexer_node の出力として使用されます。

メンバー関数

template<typename T, typename R>
tagged_msg(T const &index, R const &value)

要件:

  • R タイプは TN タイプのいずれかと同じである必要があります。

  • T タイプは TagType コンストラクター・パラメーターとして受け入れる必要があります。

タグ index と値 val を使用して tagged_msg を構築します。

TagType tag() const

現在のタグを返します。

template<typename V>
const V &cast_to() const

要件:

  • V タイプは TN タイプのいずれかと同じである必要があります。

tagged_msg に格納さている値を返します。値が V タイプでない場合、std::runtime_error 例外がスローされます。

template<typename V>
bool is_a() const

要件:

  • V タイプは TN タイプのいずれかと同じである必要があります。

Vtagged_msg で保持されている値のタイプである場合は true を返します。それ以外は false を返します。

非メンバー関数


template<typename V, typename T> 
const V& cast_to(T const &t) { 
    return t.cast_to<V>(); 
} 

template<typename V, typename T> 
bool is_a(T const &t);

要件:

  • T タイプはインスタンス化された tagged_msg クラス・テンプレートである必要があります。

  • V タイプは、tagged_msg に対応するテンプレート引数の 1 つと同じでなけれはなりません。.

tagged_msg オブジェクトに適用される独立したテンプレート関数 cast_to および is_a は、そのオブジェクトの対応するメソッドの呼び出しと等価です。

参照: