YOrch 1.0.0
Loading...
Searching...
No Matches
builder_root_core_forward.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <utility>
4
5#include "concepts.hpp" // IWYU pragma: keep
6#include "node_binder.hpp"
7
8namespace yorch::detail {
9
10template <typename Derived, typename... Nodes>
12 template <typename F>
13 requires (sizeof...(Nodes) == 0) &&
15 [[nodiscard]] constexpr auto root_forward_prev(F&& f) const& {
17 const Derived*,
18 0,
19 std::decay_t<F>,
22 > {
23 static_cast<const Derived*>(this),
24 std::forward<F>(f),
25 {},
26 {}
27 };
28 }
29
30 template <typename F, typename FanoutPolicy>
31 requires (sizeof...(Nodes) == 0) &&
34 [[nodiscard]] constexpr auto root_forward_prev(F&& f, FanoutPolicy&& fanout_policy) const& {
36 const Derived*,
37 0,
38 std::decay_t<F>,
39 std::decay_t<FanoutPolicy>,
41 > {
42 static_cast<const Derived*>(this),
43 std::forward<F>(f),
44 std::forward<FanoutPolicy>(fanout_policy),
45 {}
46 };
47 }
48
49 template <typename F, typename AdapterChain>
50 requires (sizeof...(Nodes) == 0) &&
53 [[nodiscard]] constexpr auto root_forward_prev(F&& f, AdapterChain&& adapter_specs) const& {
55 const Derived*,
56 0,
57 std::decay_t<F>,
59 std::decay_t<AdapterChain>
60 > {
61 static_cast<const Derived*>(this),
62 std::forward<F>(f),
63 {},
64 std::forward<AdapterChain>(adapter_specs)
65 };
66 }
67
68 template <typename F, typename FanoutPolicy, typename AdapterChain>
69 requires (sizeof...(Nodes) == 0) &&
73 [[nodiscard]] constexpr auto root_forward_prev(F&& f, FanoutPolicy&& fanout_policy, AdapterChain&& adapter_specs) const& {
75 const Derived*,
76 0,
77 std::decay_t<F>,
78 std::decay_t<FanoutPolicy>,
79 std::decay_t<AdapterChain>
80 > {
81 static_cast<const Derived*>(this),
82 std::forward<F>(f),
83 std::forward<FanoutPolicy>(fanout_policy),
84 std::forward<AdapterChain>(adapter_specs)
85 };
86 }
87
88 template <typename F, typename ReceiverSpec>
89 requires (sizeof...(Nodes) == 0) &&
93 [[nodiscard]] constexpr auto root_forward_prev_member(F&& f, ReceiverSpec&& receiver_spec) const& {
95 const Derived*,
96 0,
97 std::decay_t<F>,
98 std::decay_t<ReceiverSpec>,
101 > {
102 static_cast<const Derived*>(this),
103 std::forward<F>(f),
104 std::forward<ReceiverSpec>(receiver_spec),
105 {},
106 {}
107 };
108 }
109
110 template <typename F, typename ReceiverSpec, typename FanoutPolicy>
111 requires (sizeof...(Nodes) == 0) &&
116 [[nodiscard]] constexpr auto root_forward_prev_member(F&& f, ReceiverSpec&& receiver_spec, FanoutPolicy&& fanout_policy) const& {
118 const Derived*,
119 0,
120 std::decay_t<F>,
121 std::decay_t<ReceiverSpec>,
122 std::decay_t<FanoutPolicy>,
124 > {
125 static_cast<const Derived*>(this),
126 std::forward<F>(f),
127 std::forward<ReceiverSpec>(receiver_spec),
128 std::forward<FanoutPolicy>(fanout_policy),
129 {}
130 };
131 }
132
133 template <typename F, typename ReceiverSpec, typename AdapterChain>
134 requires (sizeof...(Nodes) == 0) &&
139 [[nodiscard]] constexpr auto root_forward_prev_member(F&& f, ReceiverSpec&& receiver_spec, AdapterChain&& adapter_specs) const& {
141 const Derived*,
142 0,
143 std::decay_t<F>,
144 std::decay_t<ReceiverSpec>,
146 std::decay_t<AdapterChain>
147 > {
148 static_cast<const Derived*>(this),
149 std::forward<F>(f),
150 std::forward<ReceiverSpec>(receiver_spec),
151 {},
152 std::forward<AdapterChain>(adapter_specs)
153 };
154 }
155
156 template <typename F, typename ReceiverSpec, typename FanoutPolicy, typename AdapterChain>
157 requires (sizeof...(Nodes) == 0) &&
163 [[nodiscard]] constexpr auto root_forward_prev_member(F&& f, ReceiverSpec&& receiver_spec, FanoutPolicy&& fanout_policy, AdapterChain&& adapter_specs) const& {
165 const Derived*,
166 0,
167 std::decay_t<F>,
168 std::decay_t<ReceiverSpec>,
169 std::decay_t<FanoutPolicy>,
170 std::decay_t<AdapterChain>
171 > {
172 static_cast<const Derived*>(this),
173 std::forward<F>(f),
174 std::forward<ReceiverSpec>(receiver_spec),
175 std::forward<FanoutPolicy>(fanout_policy),
176 std::forward<AdapterChain>(adapter_specs)
177 };
178 }
179
180 template <typename F>
181 requires (sizeof...(Nodes) == 0) &&
183 [[nodiscard]] constexpr auto root_forward_prev(F&& f) && {
185 Derived,
186 0,
187 std::decay_t<F>,
190 > {
191 static_cast<Derived&&>(*this),
192 std::forward<F>(f),
193 {},
194 {}
195 };
196 }
197
198 template <typename F, typename FanoutPolicy>
199 requires (sizeof...(Nodes) == 0) &&
204 Derived,
205 0,
206 std::decay_t<F>,
207 std::decay_t<FanoutPolicy>,
209 > {
210 static_cast<Derived&&>(*this),
211 std::forward<F>(f),
212 std::forward<FanoutPolicy>(fanout_policy),
213 {}
214 };
215 }
216
217 template <typename F, typename AdapterChain>
218 requires (sizeof...(Nodes) == 0) &&
221 [[nodiscard]] constexpr auto root_forward_prev(F&& f, AdapterChain&& adapter_specs) && {
223 Derived,
224 0,
225 std::decay_t<F>,
227 std::decay_t<AdapterChain>
228 > {
229 static_cast<Derived&&>(*this),
230 std::forward<F>(f),
231 {},
232 std::forward<AdapterChain>(adapter_specs)
233 };
234 }
235
236 template <typename F, typename FanoutPolicy, typename AdapterChain>
237 requires (sizeof...(Nodes) == 0) &&
241 [[nodiscard]] constexpr auto root_forward_prev(F&& f, FanoutPolicy&& fanout_policy, AdapterChain&& adapter_specs) && {
243 Derived,
244 0,
245 std::decay_t<F>,
246 std::decay_t<FanoutPolicy>,
247 std::decay_t<AdapterChain>
248 > {
249 static_cast<Derived&&>(*this),
250 std::forward<F>(f),
251 std::forward<FanoutPolicy>(fanout_policy),
252 std::forward<AdapterChain>(adapter_specs)
253 };
254 }
255
256 template <typename F, typename ReceiverSpec>
257 requires (sizeof...(Nodes) == 0) &&
261 [[nodiscard]] constexpr auto root_forward_prev_member(F&& f, ReceiverSpec&& receiver_spec) && {
263 Derived,
264 0,
265 std::decay_t<F>,
266 std::decay_t<ReceiverSpec>,
269 > {
270 static_cast<Derived&&>(*this),
271 std::forward<F>(f),
272 std::forward<ReceiverSpec>(receiver_spec),
273 {},
274 {}
275 };
276 }
277
278 template <typename F, typename ReceiverSpec, typename FanoutPolicy>
279 requires (sizeof...(Nodes) == 0) &&
284 [[nodiscard]] constexpr auto root_forward_prev_member(F&& f, ReceiverSpec&& receiver_spec, FanoutPolicy&& fanout_policy) && {
286 Derived,
287 0,
288 std::decay_t<F>,
289 std::decay_t<ReceiverSpec>,
290 std::decay_t<FanoutPolicy>,
292 > {
293 static_cast<Derived&&>(*this),
294 std::forward<F>(f),
295 std::forward<ReceiverSpec>(receiver_spec),
296 std::forward<FanoutPolicy>(fanout_policy),
297 {}
298 };
299 }
300
301 template <typename F, typename ReceiverSpec, typename AdapterChain>
302 requires (sizeof...(Nodes) == 0) &&
307 [[nodiscard]] constexpr auto root_forward_prev_member(F&& f, ReceiverSpec&& receiver_spec, AdapterChain&& adapter_specs) && {
309 Derived,
310 0,
311 std::decay_t<F>,
312 std::decay_t<ReceiverSpec>,
314 std::decay_t<AdapterChain>
315 > {
316 static_cast<Derived&&>(*this),
317 std::forward<F>(f),
318 std::forward<ReceiverSpec>(receiver_spec),
319 {},
320 std::forward<AdapterChain>(adapter_specs)
321 };
322 }
323
324 template <typename F, typename ReceiverSpec, typename FanoutPolicy, typename AdapterChain>
325 requires (sizeof...(Nodes) == 0) &&
331 [[nodiscard]] constexpr auto root_forward_prev_member(F&& f, ReceiverSpec&& receiver_spec, FanoutPolicy&& fanout_policy, AdapterChain&& adapter_specs) && {
333 Derived,
334 0,
335 std::decay_t<F>,
336 std::decay_t<ReceiverSpec>,
337 std::decay_t<FanoutPolicy>,
338 std::decay_t<AdapterChain>
339 > {
340 static_cast<Derived&&>(*this),
341 std::forward<F>(f),
342 std::forward<ReceiverSpec>(receiver_spec),
343 std::forward<FanoutPolicy>(fanout_policy),
344 std::forward<AdapterChain>(adapter_specs)
345 };
346 }
347};
348
349} // namespace yorch::detail
constexpr bool is_adapter_descriptor_v
Definition adapters.hpp:63
constexpr auto root_forward_prev(F &&f, FanoutPolicy &&fanout_policy, AdapterChain &&adapter_specs) &&
constexpr auto root_forward_prev_member(F &&f, ReceiverSpec &&receiver_spec, AdapterChain &&adapter_specs) &&
constexpr auto root_forward_prev_member(F &&f, ReceiverSpec &&receiver_spec) &&
constexpr auto root_forward_prev_member(F &&f, ReceiverSpec &&receiver_spec, AdapterChain &&adapter_specs) const &
constexpr auto root_forward_prev_member(F &&f, ReceiverSpec &&receiver_spec, FanoutPolicy &&fanout_policy, AdapterChain &&adapter_specs) &&
constexpr auto root_forward_prev_member(F &&f, ReceiverSpec &&receiver_spec, FanoutPolicy &&fanout_policy, AdapterChain &&adapter_specs) const &
constexpr auto root_forward_prev_member(F &&f, ReceiverSpec &&receiver_spec, FanoutPolicy &&fanout_policy) const &
constexpr auto root_forward_prev(F &&f, FanoutPolicy &&fanout_policy) const &
constexpr auto root_forward_prev_member(F &&f, ReceiverSpec &&receiver_spec) const &
constexpr auto root_forward_prev_member(F &&f, ReceiverSpec &&receiver_spec, FanoutPolicy &&fanout_policy) &&
constexpr auto root_forward_prev(F &&f, AdapterChain &&adapter_specs) const &
constexpr auto root_forward_prev(F &&f, AdapterChain &&adapter_specs) &&
constexpr auto root_forward_prev(F &&f, FanoutPolicy &&fanout_policy, AdapterChain &&adapter_specs) const &
constexpr auto root_forward_prev(F &&f, FanoutPolicy &&fanout_policy) &&