1.. _constructors_for_fg_nodes: 2 3Constructors for Flow Graph nodes 4================================= 5 6.. note:: 7 To enable this feature, define the ``TBB_PREVIEW_FLOW_GRAPH_FEATURES`` macro to 1. 8 9.. contents:: 10 :local: 11 :depth: 1 12 13Description 14*********** 15 16The "Helper Functions for Expressing Graphs" feature adds a set of new constructors 17that can be used to construct a node that ``follows`` or ``precedes`` a set of nodes. 18 19Where possible, the constructors support Class Template Argument Deduction (since C++17). 20 21API 22*** 23 24Header 25------ 26 27.. code:: cpp 28 29 #include <oneapi/tbb/flow_graph.h> 30 31Syntax 32------ 33 34.. code:: cpp 35 36 // continue_node 37 continue_node(follows(...), Body body, Policy = Policy()); 38 continue_node(precedes(...), Body body, Policy = Policy()); 39 40 continue_node(follows(...), int number_of_predecessors, Body body, Policy = Policy()); 41 continue_node(precedes(...), int number_of_predecessors, Body body, Policy = Policy()); 42 43 // function_node 44 function_node(follows(...), std::size_t concurrency, Policy = Policy()); 45 function_node(precedes(...), std::size_t concurrency, Policy = Policy()); 46 47 // input_node 48 input_node(precedes(...), body); 49 50 // multifunction_node 51 multifunction_node(follows(...), std::size_t concurrency, Body body); 52 multifunction_node(precedes(...), std::size_t concurrency, Body body); 53 54 // async_node 55 async_node(follows(...), std::size_t concurrency, Body body); 56 async_node(precedes(...), std::size_t concurrency, Body body); 57 58 // overwrite_node 59 explicit overwrite_node(follows(...)); 60 explicit overwrite_node(precedes(...)); 61 62 // write_once_node 63 explicit write_once_node(follows(...)); 64 explicit write_once_node(precedes(...)); 65 66 // buffer_node 67 explicit buffer_node(follows(...)); 68 explicit buffer_node(precedes(...)); 69 70 // queue_node 71 explicit queue_node(follows(...)); 72 explicit queue_node(precedes(...)); 73 74 // priority_queue_node 75 explicit priority_queue_node(follows(...), const Compare& comp = Compare()); 76 explicit priority_queue_node(precedes(...), const Compare& compare = Compare()); 77 78 // sequencer_node 79 sequencer_node(follows(...), const Sequencer& s); 80 sequencer_node(precedes(...), const Sequencer& s); 81 82 // limiter_node 83 limiter_node(follows(...), std::size_t threshold); 84 limiter_node(precedes(...), std::size_t threshold); 85 86 // broadcast_node 87 explicit broadcast_node(follows(...)); 88 explicit broadcast_node(precedes(...)); 89 90 // join_node 91 explicit join_node(follows(...), Policy = Policy()); 92 explicit join_node(precedes(...), Policy = Policy()); 93 94 // split_node 95 explicit split_node(follows(...)); 96 explicit split_node(precedes(...)); 97 98 // indexer_node 99 indexer_node(follows(...)); 100 indexer_node(precedes(...)); 101 102See Also 103******** 104:ref:`follows_precedes` 105