@@ -70,35 +70,36 @@ namespace stdexec {
7070 static_cast <_Sender&&>(__sndr), static_cast <_Receiver&&>(__rcvr)};
7171 }
7272
73- // // This implementation is used if the sender has a non-static submit member function.
74- // template <class _Sender, class _Receiver, class _Default = __void>
75- // requires sender_to<_Sender, _Receiver> && __submit::__has_memfn<_Sender, _Receiver>
76- // auto operator()(_Sender&& __sndr, _Receiver __rcvr, [[maybe_unused]] _Default __def = {}) const
77- // noexcept(noexcept(static_cast<_Sender&&>(__sndr).submit(static_cast<_Receiver&&>(__rcvr)))) {
78- // using __result_t =
79- // decltype(static_cast<_Sender&&>(__sndr).submit(static_cast<_Receiver&&>(__rcvr)));
80- // if constexpr (__same_as<__result_t, void> && !__same_as<_Default, __void>) {
81- // static_cast<_Sender&&>(__sndr).submit(static_cast<_Receiver&&>(__rcvr));
82- // return __def;
83- // } else {
84- // return static_cast<_Sender&&>(__sndr).submit(static_cast<_Receiver&&>(__rcvr));
85- // }
86- // }
73+ // This implementation is used if the sender has a non-static submit member function.
74+ template <class _Sender , class _Receiver , class _Default = __void>
75+ requires sender_to<_Sender, _Receiver> && __submit::__has_memfn<_Sender, _Receiver>
76+ auto operator ()(_Sender&& __sndr, _Receiver __rcvr, [[maybe_unused]] _Default __def = {}) const
77+ noexcept (noexcept (static_cast <_Sender&&>(__sndr).submit(static_cast <_Receiver&&>(__rcvr)))) {
78+ using __result_t =
79+ decltype (static_cast <_Sender&&>(__sndr).submit (static_cast <_Receiver&&>(__rcvr)));
80+ if constexpr (__same_as<__result_t , void > && !__same_as<_Default, __void>) {
81+ static_cast <_Sender&&>(__sndr).submit (static_cast <_Receiver&&>(__rcvr));
82+ return __def;
83+ } else {
84+ return static_cast <_Sender&&>(__sndr).submit (static_cast <_Receiver&&>(__rcvr));
85+ }
86+ }
8787
88- // // This implementation is used if the sender has a static submit member function.
89- // template <class _Sender, class _Receiver, class _Default = __void>
90- // requires sender_to<_Sender, _Receiver> && __submit::__has_static_memfn<_Sender, _Receiver>
91- // auto operator()(_Sender&& __sndr, _Receiver __rcvr, [[maybe_unused]] _Default __def = {}) const
92- // noexcept(noexcept(__sndr.submit(static_cast<_Sender&&>(__sndr), static_cast<_Receiver&&>(__rcvr)))) {
93- // using __result_t =
94- // decltype(__sndr.submit(static_cast<_Sender&&>(__sndr), static_cast<_Receiver&&>(__rcvr)));
95- // if constexpr (__same_as<__result_t, void> && !__same_as<_Default, __void>) {
96- // __sndr.submit(static_cast<_Sender&&>(__sndr), static_cast<_Receiver&&>(__rcvr));
97- // return __def;
98- // } else {
99- // return __sndr.submit(static_cast<_Sender&&>(__sndr), static_cast<_Receiver&&>(__rcvr));
100- // }
101- // }
88+ // This implementation is used if the sender has a static submit member function.
89+ template <class _Sender , class _Receiver , class _Default = __void>
90+ requires sender_to<_Sender, _Receiver> && __submit::__has_static_memfn<_Sender, _Receiver>
91+ auto operator ()(_Sender&& __sndr, _Receiver __rcvr, [[maybe_unused]] _Default __def = {}) const
92+ noexcept (
93+ noexcept (__sndr.submit(static_cast <_Sender&&>(__sndr), static_cast<_Receiver&&>(__rcvr)))) {
94+ using __result_t =
95+ decltype (__sndr.submit (static_cast <_Sender&&>(__sndr), static_cast <_Receiver&&>(__rcvr)));
96+ if constexpr (__same_as<__result_t , void > && !__same_as<_Default, __void>) {
97+ __sndr.submit (static_cast <_Sender&&>(__sndr), static_cast <_Receiver&&>(__rcvr));
98+ return __def;
99+ } else {
100+ return __sndr.submit (static_cast <_Sender&&>(__sndr), static_cast <_Receiver&&>(__rcvr));
101+ }
102+ }
102103 };
103104
104105 inline constexpr __submit_t submit{};
0 commit comments