Search code examples
c++multithreadingtbbtbb-flow-graph

TBB C++ multithreading error: No matching function for call


The following C++ code is for Intel TBB. This code was generated by the Flow Graph as well. I have 2 compilation errors:

No matching function for call to 'make_edge'
No matching function for call to 'make_edge'

Here is code with definitions:

 function_node< tbb::flow::tuple<char *,char *>, char * > result_reporter(position3_g0, 1, []( const tbb::flow::tuple<char *,char *> & in ) -> char * {...

function_node< char *, char * > sott_target_node(position3_g0, unlimited, []( char *buffer ) -> char * {

Here is the TBB calling code that creates the compilation errors

make_edge( result_join, result_reporter);

make_edge( sott_target_node, input_port< 2 >( result_join ));

I would glady provide all the code but StackOverflow prevent too much code with little description. Can any one help out figure out these errrors? Thanks


Solution

  • You are trying to use the input of the function_node incorrectly. A function_node with an input of tuple<char *, char *> takes a predecessor with a tuple<char *, char *> output.

    If this is what you want (that there be two inputs to the node each of char * type, and an output of char *) you should use a combination of an indexer_node (which has multiple input ports, and any input on any port will cause a message to be emitted with the port number and the input wrapped) that connects to a function_node that takes the output type of the indexer_node. Please see the documentation, and ask if you have any questions.