c++20协程中co_await的实际实现是什么

What is the actual implementation of co_await in c++20 co-routine

我正在研究 C++20 中的协程。

我试图了解 co_await 的工作原理。

是co_await的任何实现。

正在阅读,co_wait似乎有future/promise的行为。

当在一个线程中用 co_wait 调用 function/object 时,会调用这样的东西

auto promise = std::promise<std::string>();
auto future = promise.get_future();
void sleep()
{
     std::cout << future.get() << std::endl;
}

当notify被调用时,另一个线程调用类似这样的东西

void wakeup()
{
     promise.set_value("Hello World");
}

例如TYPE a = co_await awaitable(args), 好像是这样展开的:

    {
        auto && tmp = awaitable(args);
        if (!tmp.await_ready())
        {
            tmp.await_suspend(*this);
        }
        ret = tmp.await_resume();
    };