chriskohlhoff / asio

Asio C++ Library
http://think-async.com/Asio
4.72k stars 1.19k forks source link

how to call coroutine functions within the co_composed? #1360

Open zhllxt opened 9 months ago

zhllxt commented 9 months ago
asio::awaitable<bool> do_check()
{
       co_return true;
}

template <typename CompletionToken>
auto async_work(asio::ip::tcp::socket& socket, CompletionToken&& token)
{
return asio::async_initiate<CompletionToken, void(std::error_code)>(
    asio::experimental::co_composed<void(std::error_code)>(
        [](auto state, tcp::socket& socket) -> void
        {
            // ...

            bool result = co_await do_check(); // compile error

            // ...

        }, socket),
    token, std::ref(socket));
}