11 template <
typename Task>
12 requires (
sizeof...(Nodes) == 0) &&
18 "yorch::task_tree.root(...) received a direct-output task; use root_into(...) instead.");
21 template <
typename Task,
typename FanoutPolicy>
22 requires (
sizeof...(Nodes) == 0) &&
29 "yorch::task_tree.root(...) received a direct-output task; use root_into(...) instead.");
33 requires (
sizeof...(Nodes) == 0) &&
39 "yorch::task_tree.root(...) received a direct-output callable whose last parameter is yorch::direct_out<T>; use root_into(...) instead.");
42 template <
typename F,
typename FanoutPolicyOrChain>
43 requires (
sizeof...(Nodes) == 0) &&
50 "yorch::task_tree.root(...) received a direct-output callable whose last parameter is yorch::direct_out<T>; use root_into(...) instead.");
53 template <
typename F,
typename FanoutPolicy,
typename AdapterChain>
54 requires (
sizeof...(Nodes) == 0) &&
62 "yorch::task_tree.root(...) received a direct-output callable whose last parameter is yorch::direct_out<T>; use root_into(...) instead.");
65 template <
typename Task>
66 requires (
sizeof...(Nodes) == 0) &&
72 "yorch::task_tree.root_into(...) received a non-direct-output task; use root(...) instead.");
75 template <
typename Task,
typename FanoutPolicy>
76 requires (
sizeof...(Nodes) == 0) &&
83 "yorch::task_tree.root_into(...) received a non-direct-output task; use root(...) instead.");
87 requires (
sizeof...(Nodes) == 0) &&
93 "yorch::task_tree.root_into(...) requires a callable whose last parameter is yorch::direct_out<T>; use root(...) for ordinary tasks.");
96 template <
typename F,
typename FanoutPolicyOrChain>
97 requires (
sizeof...(Nodes) == 0) &&
104 "yorch::task_tree.root_into(...) requires a callable whose last parameter is yorch::direct_out<T>; use root(...) for ordinary tasks.");
107 template <
typename F,
typename FanoutPolicy,
typename AdapterChain>
108 requires (
sizeof...(Nodes) == 0) &&
116 "yorch::task_tree.root_into(...) requires a callable whose last parameter is yorch::direct_out<T>; use root(...) for ordinary tasks.");
119 template <
typename Task>
120 requires (
sizeof...(Nodes) == 0) &&
126 "yorch::task_tree.root_forward_prev(...) only accepts a callable; pass prebuilt tasks directly to root/node instead.");
129 template <
typename Task,
typename FanoutPolicyOrChain>
130 requires (
sizeof...(Nodes) == 0) &&
137 "yorch::task_tree.root_forward_prev(...) only accepts a callable; pass prebuilt tasks directly to root/node instead.");
140 template <
typename F>
141 requires (
sizeof...(Nodes) == 0) &&
147 "yorch::task_tree.root_forward_prev(...) does not accept callables with yorch::direct_out<T>; use root_into(...) for direct-output materialization.");
150 template <
typename F,
typename FanoutPolicyOrChain>
151 requires (
sizeof...(Nodes) == 0) &&
158 "yorch::task_tree.root_forward_prev(...) does not accept callables with yorch::direct_out<T>; use root_into(...) for direct-output materialization.");
161 template <
typename F,
typename FanoutPolicy,
typename AdapterChain>
162 requires (
sizeof...(Nodes) == 0) &&
170 "yorch::task_tree.root_forward_prev(...) does not accept callables with yorch::direct_out<T>; use root_into(...) for direct-output materialization.");
173 template <
typename F>
174 requires (
sizeof...(Nodes) == 0) &&
180 "yorch::task_tree.root_forward_prev(...) does not accept member function pointers; use root_forward_prev_member(...) instead.");
183 template <
typename F>
184 requires (
sizeof...(Nodes) == 0) &&
190 "yorch::task_tree.root_forward_prev(...) does not accept direct-output member functions; use root_into_member(...) instead.");
193 template <
typename F,
typename FanoutPolicyOrChain>
194 requires (
sizeof...(Nodes) == 0) &&
201 "yorch::task_tree.root_forward_prev(...) does not accept member function pointers; use root_forward_prev_member(...) instead.");
204 template <
typename F,
typename FanoutPolicyOrChain>
205 requires (
sizeof...(Nodes) == 0) &&
212 "yorch::task_tree.root_forward_prev(...) does not accept direct-output member functions; use root_into_member(...) instead.");
215 template <
typename F>
216 requires (
sizeof...(Nodes) == 0) &&
222 "yorch::task_tree.root_forward_prev_member(...) requires an explicit receiver binding as its second argument.");
225 template <
typename F>
226 requires (
sizeof...(Nodes) == 0) &&
232 "yorch::task_tree.root_forward_prev_member(...) requires an explicit receiver binding as its second argument; use root_into_member(...) for direct-output member functions.");
235 template <
typename F,
typename FanoutPolicyOrChain>
236 requires (
sizeof...(Nodes) == 0) &&
243 "yorch::task_tree.root_forward_prev_member(...) requires an explicit receiver binding as its second argument; pass fanout policies or adapters only after the receiver.");
246 template <
typename F,
typename FanoutPolicyOrChain>
247 requires (
sizeof...(Nodes) == 0) &&
254 "yorch::task_tree.root_forward_prev_member(...) requires an explicit receiver binding as its second argument; use root_into_member(...) for direct-output member functions.");
257 template <
typename F,
typename ReceiverSpec>
258 requires (
sizeof...(Nodes) == 0) &&
264 "yorch::task_tree.root_forward_prev_member(...) received a direct-output member function whose last parameter is yorch::direct_out<T>; use root_into_member(...) instead.");
267 template <
typename F,
typename ReceiverSpec,
typename FanoutPolicyOrChain>
268 requires (
sizeof...(Nodes) == 0) &&
276 "yorch::task_tree.root_forward_prev_member(...) received a direct-output member function whose last parameter is yorch::direct_out<T>; use root_into_member(...) instead.");
279 template <
typename F>
280 requires (
sizeof...(Nodes) == 0) &&
286 "yorch::task_tree.root_member(...) requires an explicit receiver binding as its second argument.");
289 template <
typename F>
290 requires (
sizeof...(Nodes) == 0) &&
296 "yorch::task_tree.root_member(...) requires an explicit receiver binding as its second argument; use root_into_member(...) for direct-output member functions.");
299 template <
typename F,
typename FanoutPolicyOrChain>
300 requires (
sizeof...(Nodes) == 0) &&
307 "yorch::task_tree.root_member(...) requires an explicit receiver binding as its second argument; pass fanout policies or adapters only after the receiver.");
310 template <
typename F,
typename FanoutPolicyOrChain>
311 requires (
sizeof...(Nodes) == 0) &&
318 "yorch::task_tree.root_member(...) requires an explicit receiver binding as its second argument; use root_into_member(...) for direct-output member functions.");
321 template <
typename F,
typename ReceiverSpec>
322 requires (
sizeof...(Nodes) == 0) &&
328 "yorch::task_tree.root_member(...) received a direct-output member function whose last parameter is yorch::direct_out<T>; use root_into_member(...) instead.");
331 template <
typename F,
typename ReceiverSpec,
typename FanoutPolicyOrChain>
332 requires (
sizeof...(Nodes) == 0) &&
340 "yorch::task_tree.root_member(...) received a direct-output member function whose last parameter is yorch::direct_out<T>; use root_into_member(...) instead.");
343 template <
typename F>
344 requires (
sizeof...(Nodes) == 0) &&
350 "yorch::task_tree.root_into_member(...) requires an explicit receiver binding as its second argument.");
353 template <
typename F>
354 requires (
sizeof...(Nodes) == 0) &&
360 "yorch::task_tree.root_into_member(...) requires an explicit receiver binding as its second argument; use root_member(...) for ordinary member functions.");
363 template <
typename F,
typename FanoutPolicyOrChain>
364 requires (
sizeof...(Nodes) == 0) &&
371 "yorch::task_tree.root_into_member(...) requires an explicit receiver binding as its second argument; pass fanout policies or adapters only after the receiver.");
374 template <
typename F,
typename FanoutPolicyOrChain>
375 requires (
sizeof...(Nodes) == 0) &&
382 "yorch::task_tree.root_into_member(...) requires an explicit receiver binding as its second argument; use root_member(...) for ordinary member functions.");
385 template <
typename F,
typename ReceiverSpec>
386 requires (
sizeof...(Nodes) == 0) &&
392 "yorch::task_tree.root_into_member(...) requires a member function whose last parameter is yorch::direct_out<T>; use root_member(...) for ordinary member functions.");
395 template <
typename F,
typename ReceiverSpec,
typename FanoutPolicyOrChain>
396 requires (
sizeof...(Nodes) == 0) &&
404 "yorch::task_tree.root_into_member(...) requires a member function whose last parameter is yorch::direct_out<T>; use root_member(...) for ordinary member functions.");
constexpr bool is_adapter_descriptor_v
constexpr void root_forward_prev_member(F &&) const &
constexpr void root_forward_prev(F &&) const &
constexpr void root_forward_prev_member(F &&) const &
constexpr void root_into(F &&, FanoutPolicyOrChain &&) const &
constexpr void root_forward_prev(F &&, FanoutPolicy &&, AdapterChain &&) const &
constexpr void root_into_member(F &&, FanoutPolicyOrChain &&) const &
constexpr void root_into_member(F &&, ReceiverSpec &&) const &
constexpr void root(F &&) const &
constexpr void root_forward_prev(F &&, FanoutPolicyOrChain &&) const &
constexpr void root_into_member(F &&, ReceiverSpec &&, FanoutPolicyOrChain &&) const &
constexpr void root_forward_prev(F &&, FanoutPolicyOrChain &&) const &
constexpr void root_forward_prev(F &&, FanoutPolicyOrChain &&) const &
constexpr void root_forward_prev(Task &&) const &
constexpr void root_forward_prev_member(F &&, ReceiverSpec &&, FanoutPolicyOrChain &&) const &
constexpr void root_forward_prev_member(F &&, ReceiverSpec &&) const &
constexpr void root_into(Task &&) const &
constexpr void root(Task &&) const &
constexpr void root_into(Task &&, FanoutPolicy &&) const &
constexpr void root(Task &&, FanoutPolicy &&) const &
constexpr void root(F &&, FanoutPolicy &&, AdapterChain &&) const &
constexpr void root_into_member(F &&) const &
constexpr void root_member(F &&, FanoutPolicyOrChain &&) const &
constexpr void root_member(F &&, ReceiverSpec &&, FanoutPolicyOrChain &&) const &
constexpr void root_forward_prev(F &&) const &
constexpr void root_forward_prev_member(F &&, FanoutPolicyOrChain &&) const &
constexpr void root_into(F &&, FanoutPolicy &&, AdapterChain &&) const &
constexpr void root_into(F &&) const &
constexpr void root(F &&, FanoutPolicyOrChain &&) const &
constexpr void root_member(F &&) const &
constexpr void root_member(F &&, ReceiverSpec &&) const &
constexpr void root_forward_prev(F &&) const &
constexpr void root_member(F &&, FanoutPolicyOrChain &&) const &
constexpr void root_into_member(F &&) const &
constexpr void root_forward_prev(Task &&, FanoutPolicyOrChain &&) const &
constexpr void root_member(F &&) const &
constexpr void root_forward_prev_member(F &&, FanoutPolicyOrChain &&) const &
constexpr void root_into_member(F &&, FanoutPolicyOrChain &&) const &