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_msg
は indexer_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
タイプのいずれかと同じである必要があります。
V
がtagged_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
は、そのオブジェクトの対応するメソッドの呼び出しと等価です。
参照: