| 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 |
nothing calls this directly
no outgoing calls
no test coverage detected