2626# include " ../__detail/__basic_sequence.hpp"
2727
2828# include " ../trampoline_scheduler.hpp"
29+ # include " ../sequence.hpp"
2930
3031# include < exception>
3132# include < ranges>
@@ -110,13 +111,13 @@ namespace exec {
110111 using _Receiver = stdexec::__t <_ReceiverId>;
111112 _Receiver __rcvr_;
112113
113- using _ItemSender = decltype (stdexec::starts_on(
114- std::declval<trampoline_scheduler&>(),
115- std::declval<__sender_t <_Range>>()));
116-
114+ using __item_sender_t =
115+ __result_of<exec::sequence, schedule_result_t <trampoline_scheduler&>, __sender_t <_Range>>;
117116 using __next_receiver_t = stdexec::__t <__next_receiver<_Range, _ReceiverId>>;
118117
119- std::optional<connect_result_t <next_sender_of_t <_Receiver, _ItemSender>, __next_receiver_t >>
118+ std::optional<
119+ connect_result_t <next_sender_of_t <_Receiver, __item_sender_t >, __next_receiver_t >
120+ >
120121 __op_{};
121122 trampoline_scheduler __scheduler_{};
122123
@@ -128,7 +129,9 @@ namespace exec {
128129 STDEXEC_TRY {
129130 stdexec::start (__op_.emplace (__emplace_from{[&] {
130131 return stdexec::connect (
131- exec::set_next (__rcvr_, stdexec::starts_on (__scheduler_, __sender_t <_Range>{this })),
132+ exec::set_next (
133+ __rcvr_,
134+ exec::sequence (stdexec::schedule (__scheduler_), __sender_t <_Range>{this })),
132135 __next_receiver_t {this });
133136 }}));
134137 }
@@ -171,21 +174,23 @@ namespace exec {
171174 using __completion_sigs =
172175 completion_signatures<set_value_t (), set_error_t (std::exception_ptr), set_stopped_t ()>;
173176
174-
175177 template <class _Sequence >
176- using _ItemSender = decltype (stdexec::starts_on(
177- __declval<trampoline_scheduler&>(),
178- __declval<__sender_t <__data_of<_Sequence>>>()));
178+ using __item_sender_t = __result_of<
179+ exec::sequence,
180+ schedule_result_t <trampoline_scheduler&>,
181+ __sender_t <__data_of<_Sequence>>
182+ >;
179183
180184 template <class _Sequence , class _Receiver >
181185 using _NextReceiver = stdexec::__t <__next_receiver<__data_of<_Sequence>, __id<_Receiver>>>;
182186
183187 template <class _Sequence , class _Receiver >
184- using _NextSender = next_sender_of_t <_Receiver, _ItemSender <_Sequence>>;
188+ using _NextSender = next_sender_of_t <_Receiver, __item_sender_t <_Sequence>>;
185189
186190 template <
187191 sender_expr_for<iterate_t > _SeqExpr,
188- sequence_receiver_of<item_types<_ItemSender<_SeqExpr>>> _Receiver>
192+ sequence_receiver_of<item_types<__item_sender_t <_SeqExpr>>> _Receiver
193+ >
189194 requires sender_to<_NextSender<_SeqExpr, _Receiver>, _NextReceiver<_SeqExpr, _Receiver>>
190195 static auto subscribe (_SeqExpr&& __seq, _Receiver __rcvr)
191196 noexcept (__nothrow_callable<__sexpr_apply_t , _SeqExpr, __subscribe_fn<_Receiver>>)
@@ -200,7 +205,7 @@ namespace exec {
200205
201206 template <sender_expr_for<iterate_t > _Sequence>
202207 static auto get_item_types (_Sequence&&, __ignore) noexcept //
203- -> item_types<_ItemSender <_Sequence>> {
208+ -> item_types<__item_sender_t <_Sequence>> {
204209 return {};
205210 }
206211
0 commit comments