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