Type-specified message keys for join_node#
Note
To enable this feature, define the TBB_PREVIEW_FLOW_GRAPH_FEATURES macro to 1.
Description#
The extension allows a key matching join_node to obtain keys via functions associated with
its input types. The extension simplifies the existing approach by removing the need to
provide a function object for each input port of join_node.
API#
Header#
#include "oneapi/tbb/flow_graph.h"
Syntax#
The extension adds a special constructor to the join_node interface when the
key_matching<typename K, class KHash=tbb_hash_compare> policy is
used. The constructor has the following signature:
join_node( graph &g )
When constructed this way, a join_node calls the
key_from_message function for each incoming message to obtain the key associated
with it. The default implementation of key_from_message is the following
namespace oneapi {
namespace tbb {
namespace flow {
template <typename K, typename T>
K key_from_message( const T &t ) {
return t.key();
}
}
}
}
T is one of the user-provided types in OutputTuple and is
used to construct the join_node, and K is the key type
of the node.
By default, the key() method defined in the message class will be called.
Alternatively, the user can define its own key_from_message function in the
same namespace with the message type. This function will be found via C++ argument-dependent
lookup and used in place of the default implementation.