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 は、そのオブジェクトの対応するメソッドの呼び出しと等価です。
参照:
