@@ -255,9 +255,10 @@ namespace stdexec {
255255
256256 template <class _Receiver , class ... _As>
257257 requires tag_invocable<set_value_t , _Receiver, _As...>
258- void operator ()(_Receiver&& __rcvr, _As&&... __as) const noexcept {
258+ auto operator ()(_Receiver&& __rcvr, _As&&... __as) const noexcept
259+ -> tag_invoke_result_t<set_value_t, _Receiver, _As...> {
259260 static_assert (nothrow_tag_invocable<set_value_t , _Receiver, _As...>);
260- ( void ) tag_invoke (set_value_t {}, (_Receiver&&) __rcvr, (_As&&) __as...);
261+ return tag_invoke (set_value_t {}, (_Receiver&&) __rcvr, (_As&&) __as...);
261262 }
262263 };
263264
@@ -268,9 +269,10 @@ namespace stdexec {
268269
269270 template <class _Receiver , class _Error >
270271 requires tag_invocable<set_error_t , _Receiver, _Error>
271- void operator ()(_Receiver&& __rcvr, _Error&& __err) const noexcept {
272+ auto operator ()(_Receiver&& __rcvr, _Error&& __err) const noexcept
273+ -> tag_invoke_result_t<set_error_t, _Receiver, _Error> {
272274 static_assert (nothrow_tag_invocable<set_error_t , _Receiver, _Error>);
273- ( void ) tag_invoke (set_error_t {}, (_Receiver&&) __rcvr, (_Error&&) __err);
275+ return tag_invoke (set_error_t {}, (_Receiver&&) __rcvr, (_Error&&) __err);
274276 }
275277 };
276278
@@ -281,9 +283,10 @@ namespace stdexec {
281283
282284 template <class _Receiver >
283285 requires tag_invocable<set_stopped_t , _Receiver>
284- void operator ()(_Receiver&& __rcvr) const noexcept {
286+ auto operator ()(_Receiver&& __rcvr) const noexcept
287+ -> tag_invoke_result_t<set_stopped_t, _Receiver> {
285288 static_assert (nothrow_tag_invocable<set_stopped_t , _Receiver>);
286- ( void ) tag_invoke (set_stopped_t {}, (_Receiver&&) __rcvr);
289+ return tag_invoke (set_stopped_t {}, (_Receiver&&) __rcvr);
287290 }
288291 };
289292 } // namespace __receivers
@@ -1057,8 +1060,9 @@ namespace stdexec {
10571060 struct start_t {
10581061 template <class _Op >
10591062 requires tag_invocable<start_t , _Op&>
1060- void operator ()(_Op& __op) const noexcept (nothrow_tag_invocable<start_t , _Op&>) {
1061- (void ) tag_invoke (start_t {}, __op);
1063+ auto operator ()(_Op& __op) const noexcept (nothrow_tag_invocable<start_t , _Op&>)
1064+ -> tag_invoke_result_t<start_t, _Op&> {
1065+ return tag_invoke (start_t {}, __op);
10621066 }
10631067 };
10641068 }
0 commit comments