| 76 | { |
| 77 | template <sender_for<STDEXEC::bulk_chunked_t> Sender, class Env> |
| 78 | static constexpr auto transform_sender(STDEXEC::set_value_t, Sender&& sndr, Env const & env) |
| 79 | { |
| 80 | auto& [tag, data, child] = sndr; |
| 81 | auto& [pol, shape, fun] = data; |
| 82 | |
| 83 | if constexpr (STDEXEC::__completes_on<decltype(child), scheduler, Env>) |
| 84 | { |
| 85 | auto sch = |
| 86 | STDEXEC::get_completion_scheduler<STDEXEC::set_value_t>(STDEXEC::get_env(child), env); |
| 87 | using sender_t = |
| 88 | scheduler::template bulk_sender_t<decltype(child), decltype(shape), decltype(fun)>; |
| 89 | return sender_t{*sch.pool_, |
| 90 | STDEXEC::__forward_like<Sender>(child), |
| 91 | shape, |
| 92 | STDEXEC::__forward_like<Sender>(fun)}; |
| 93 | } |
| 94 | else |
| 95 | { |
| 96 | return STDEXEC::__not_a_sender< |
| 97 | STDEXEC::_WHAT_(CANNOT_DISPATCH_BULK_ALGORITHM_TO_THE_POOL_SCHEDULER), |
| 98 | STDEXEC::_WHY_(BECAUSE_THERE_IS_NO_POOL_SCHEDULER_IN_THE_ENVIRONMENT), |
| 99 | STDEXEC::_WHERE_(STDEXEC::_IN_ALGORITHM_, STDEXEC::tag_of_t<Sender>), |
| 100 | STDEXEC::_TO_FIX_THIS_ERROR_( |
| 101 | ADD_A_CONTINUES_ON_TRANSITION_TO_THE_POOL_SCHEDULER_BEFORE_THE_BULK_ALGORITHM), |
| 102 | STDEXEC::_WITH_PRETTY_SENDER_<Sender>, |
| 103 | STDEXEC::_WITH_ENVIRONMENT_(Env)>(); |
| 104 | } |
| 105 | } |
| 106 | |
| 107 | template <sender_for<STDEXEC::bulk_unchunked_t> Sender, class Env> |
| 108 | static constexpr auto transform_sender(STDEXEC::set_value_t, Sender&& sndr, Env const & env); |