MCPcopy Create free account
hub / github.com/NVIDIA/stdexec / __get_completion_signatures

Method __get_completion_signatures

include/exec/fork_join.hpp:251–292  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

249 template <class Self, class... Env>
250 STDEXEC_ATTRIBUTE(host, device)
251 static consteval auto __get_completion_signatures()
252 {
253 using namespace STDEXEC;
254
255 using _closures_t = STDEXEC::__data_of<Self>;
256 using _child_sndr_t = STDEXEC::__child_of<Self>;
257
258 if constexpr (__minvocable_q<__completion_domain_of_t, set_value_t, _child_sndr_t, Env...>)
259 {
260 using _domain_t = __completion_domain_of_t<set_value_t, _child_sndr_t, Env...>;
261 using _child_t = __copy_cvref_t<Self, _child_sndr_t>;
262 using _child_completions_t = __completion_signatures_of_t<_child_t, __fwd_env_t<Env>...>;
263 using __decay_copyable_results_t =
264 STDEXEC::__decay_copyable_results_t<_child_completions_t>;
265
266 if constexpr (!STDEXEC::__valid_completion_signatures<_child_completions_t>)
267 {
268 return _child_completions_t{};
269 }
270 else if constexpr (!__decay_copyable_results_t::value)
271 {
272 return _ERROR_<_WHAT_(PREDECESSOR_RESULTS_ARE_NOT_DECAY_COPYABLE),
273 _IN_ALGORITHM_(exec::fork_join_t)>();
274 }
275 else
276 {
277 using _sndr_t =
278 fork_join_impl_t::_when_all_sndr_t<_child_completions_t, _closures_t, _domain_t>;
279 return __completion_signatures_of_t<_sndr_t, __fwd_env_t<Env>...>{};
280 }
281 }
282 else if constexpr (sizeof...(Env) == 0)
283 {
284 return STDEXEC::__throw_dependent_sender_error<Self>();
285 }
286 else
287 {
288 return STDEXEC::__throw_compile_time_error<_INVALID_ARGUMENTS_TO_FORK_JOIN_,
289 __children_of<Self, __qq<_WITH_PRETTY_SENDERS_>>,
290 __fn_t<_WITH_ENVIRONMENT_, Env>...>();
291 }
292 }
293
294 static constexpr auto __connect =
295 []<class _Receiver, class _Sender>(_Sender&& __sndr, _Receiver&& __rcvr) noexcept

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected