@@ -49,7 +49,7 @@ namespace STDEXEC {
4949 // ...
5050 // >
5151 template <class _CvSender , class _Env >
52- using __results_of = __for_each_completion_signature_t <
52+ using __results_of_t = __for_each_completion_signature_t <
5353 __completion_signatures_of_t <_CvSender, _Env>,
5454 __decayed_tuple,
5555 __munique<__qq<STDEXEC::__variant>>::__f
@@ -95,7 +95,7 @@ namespace STDEXEC {
9595
9696 template <class _Sexpr , class _Receiver >
9797 struct __state_base : __immovable {
98- using __variant_t = __results_of <__child_of<_Sexpr>, env_of_t <_Receiver>>;
98+ using __variant_t = __results_of_t <__child_of<_Sexpr>, env_of_t <_Receiver>>;
9999
100100 _Receiver __rcvr_;
101101 __variant_t __data_{__no_init};
@@ -133,7 +133,7 @@ namespace STDEXEC {
133133
134134 template <class _Scheduler , class _Sexpr , class _Receiver >
135135 struct __state : __state_base<_Sexpr, _Receiver> {
136- using __variant_t = __results_of <__child_of<_Sexpr>, env_of_t <_Receiver>>;
136+ using __variant_t = __results_of_t <__child_of<_Sexpr>, env_of_t <_Receiver>>;
137137 using __receiver2_t = __receiver2<_Sexpr, _Receiver>;
138138
139139 constexpr explicit __state (_Scheduler __sched, _Receiver&& __rcvr)
@@ -342,6 +342,8 @@ namespace STDEXEC {
342342 }
343343 }
344344
345+ template <class _Sender , class _Receiver >
346+ using __state_for_t = __state<__decay_t <__tuple_element_t <1 , _Sender>>, _Sender, _Receiver>;
345347
346348 public:
347349 static constexpr auto get_attrs =
@@ -365,12 +367,12 @@ namespace STDEXEC {
365367
366368 static constexpr auto get_state =
367369 []<class _Sender , class _Receiver >(_Sender&& __sndr, _Receiver&& __rcvr)
370+ -> __state_for_t <_Sender, _Receiver>
368371 requires sender_in<__child_of<_Sender>, __fwd_env_t <env_of_t <_Receiver>>>
369372 {
370373 static_assert (sender_expr_for<_Sender, continues_on_t >);
371- auto __sched = STDEXEC::__get<1 >(static_cast <_Sender&&>(__sndr));
372- return __state<decltype (__sched), _Sender, _Receiver>{
373- __sched, static_cast <_Receiver&&>(__rcvr)};
374+ auto & [__tag, __sched, __child] = __sndr;
375+ return __state_for_t <_Sender, _Receiver>{__sched, static_cast <_Receiver&&>(__rcvr)};
374376 };
375377
376378 static constexpr auto complete = []<class _State , class _Tag , class ... _Args>(
0 commit comments