tagged_msg#
[flow_graph.tagged_msg]
A class template composed of a tag and a message. The message is a value that can be one of several defined types.
// Defined in header <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
Requirements:
All types in
TNtemplate parameter pack must meet the CopyConstructible requirements from [copyconstructible] ISO C++ Standard section.The type TagType must be an integral unsigned type.
The tagged_msg class template is intended for messages whose type is determined at runtime.
A message of one of the types TN is tagged with a tag of type TagType. The tag then can
serve to identify the message. In the flow graph, tagged_msg is used as the output of
indexer_node.
Member functions#
-
template<typename T, typename R>
tagged_msg(T const &index, R const &value)# Requirements:
The type R must be the same as one of the
TNtypes.The type T must be acceptable as a
TagTypeconstructor parameter.
Constructs a
tagged_msgwith tagindexand valueval.
-
TagType tag() const#
Returns the current tag.
-
template<typename V>
const V &cast_to() const# Requirements:
The type
Vmust be the same as one of theTNtypes.
Returns the value stored in
tagged_msg. If the value is not of typeV, thestd::runtime_errorexception is thrown.
-
template<typename V>
bool is_a() const# Requirements:
The type
Vmust be the same as one of theTNtypes.
Returns true if
Vis the type of the value held by thetagged_msg. Returns false, otherwise.
Non-member functions#
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);
Requirements:
The type
Tmust be an instantiatedtagged_msgclass template.The type
Vmust be the same as one of the corresponding template arguments fortagged_msg.
The free-standing template functions cast_to and is_a applied to a tagged_msg object
are equivalent to the calls of the corresponding methods of that object.
See also: