@@ -254,27 +254,30 @@ namespace stdexec {
254254 struct set_value_t {
255255 template <class _Receiver , class ... _As>
256256 requires tag_invocable<set_value_t , _Receiver, _As...>
257- void operator ()(_Receiver&& __rcvr, _As&&... __as) const noexcept {
257+ auto operator ()(_Receiver&& __rcvr, _As&&... __as) const noexcept
258+ -> tag_invoke_result_t<set_value_t, _Receiver, _As...> {
258259 static_assert (nothrow_tag_invocable<set_value_t , _Receiver, _As...>);
259- ( void ) tag_invoke (set_value_t {}, (_Receiver&&) __rcvr, (_As&&) __as...);
260+ return tag_invoke (set_value_t {}, (_Receiver&&) __rcvr, (_As&&) __as...);
260261 }
261262 };
262263
263264 struct set_error_t {
264265 template <class _Receiver , class _Error >
265266 requires tag_invocable<set_error_t , _Receiver, _Error>
266- void operator ()(_Receiver&& __rcvr, _Error&& __err) const noexcept {
267+ auto operator ()(_Receiver&& __rcvr, _Error&& __err) const noexcept
268+ -> tag_invoke_result_t<set_error_t, _Receiver, _Error> {
267269 static_assert (nothrow_tag_invocable<set_error_t , _Receiver, _Error>);
268- ( void ) tag_invoke (set_error_t {}, (_Receiver&&) __rcvr, (_Error&&) __err);
270+ return tag_invoke (set_error_t {}, (_Receiver&&) __rcvr, (_Error&&) __err);
269271 }
270272 };
271273
272274 struct set_stopped_t {
273275 template <class _Receiver >
274276 requires tag_invocable<set_stopped_t , _Receiver>
275- void operator ()(_Receiver&& __rcvr) const noexcept {
277+ auto operator ()(_Receiver&& __rcvr) const noexcept
278+ -> tag_invoke_result_t<set_stopped_t, _Receiver> {
276279 static_assert (nothrow_tag_invocable<set_stopped_t , _Receiver>);
277- ( void ) tag_invoke (set_stopped_t {}, (_Receiver&&) __rcvr);
280+ return tag_invoke (set_stopped_t {}, (_Receiver&&) __rcvr);
278281 }
279282 };
280283 } // namespace __receivers
@@ -985,8 +988,9 @@ namespace stdexec {
985988 struct start_t {
986989 template <class _Op >
987990 requires tag_invocable<start_t , _Op&>
988- void operator ()(_Op& __op) const noexcept (nothrow_tag_invocable<start_t , _Op&>) {
989- (void ) tag_invoke (start_t {}, __op);
991+ auto operator ()(_Op& __op) const noexcept (nothrow_tag_invocable<start_t , _Op&>)
992+ -> tag_invoke_result_t<start_t, _Op&> {
993+ return tag_invoke (start_t {}, __op);
990994 }
991995 };
992996 }
0 commit comments