From 370c58e83bc70d81ac875916e180a57e767a7a5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dietmar=20K=C3=BChl?= Date: Fri, 7 Nov 2025 16:04:26 -1000 Subject: [PATCH 1/2] change sender_awaitable::await_suspend to use coro handles --- include/beman/execution/detail/sender_awaitable.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/beman/execution/detail/sender_awaitable.hpp b/include/beman/execution/detail/sender_awaitable.hpp index c49c56d..74f54a1 100644 --- a/include/beman/execution/detail/sender_awaitable.hpp +++ b/include/beman/execution/detail/sender_awaitable.hpp @@ -87,15 +87,15 @@ class sender_awaitable { sender_awaitable::awaitable_receiver{::std::addressof(result)})} {} static constexpr bool await_ready() noexcept { return false; } - bool await_suspend(::std::coroutine_handle) noexcept { + ::std::coroutine_handle<> await_suspend(::std::coroutine_handle handle) noexcept { ::beman::execution::start(state); if (::std::get<1>(this->result).exchange(true, std::memory_order_acq_rel)) { if (::std::holds_alternative<::std::monostate>(::std::get<0>(this->result))) { - return bool(::std::get<2>(this->result).promise().unhandled_stopped()); + return ::std::get<2>(this->result).promise().unhandled_stopped(); } - return false; + return ::std::move(handle); } - return true; + return ::std::noop_coroutine(); } value_type await_resume() { if (::std::holds_alternative<::std::exception_ptr>(::std::get<0>(result))) { From 350915f043e9c7affad145ba190bac30c461f9ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dietmar=20K=C3=BChl?= Date: Fri, 7 Nov 2025 16:09:42 -1000 Subject: [PATCH 2/2] clang-format --- include/beman/execution/detail/sender_awaitable.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/beman/execution/detail/sender_awaitable.hpp b/include/beman/execution/detail/sender_awaitable.hpp index 74f54a1..4f72cb5 100644 --- a/include/beman/execution/detail/sender_awaitable.hpp +++ b/include/beman/execution/detail/sender_awaitable.hpp @@ -86,7 +86,7 @@ class sender_awaitable { state{::beman::execution::connect(::std::forward(sndr), sender_awaitable::awaitable_receiver{::std::addressof(result)})} {} - static constexpr bool await_ready() noexcept { return false; } + static constexpr bool await_ready() noexcept { return false; } ::std::coroutine_handle<> await_suspend(::std::coroutine_handle handle) noexcept { ::beman::execution::start(state); if (::std::get<1>(this->result).exchange(true, std::memory_order_acq_rel)) {