当前逻辑: ```.cpp struct FinalAwaiter { bool await_ready() const noexcept { return false; } template <typename PromiseType> auto await_suspend(std::coroutine_handle<PromiseType> h) noexcept { return h.promise()._continuation; } void await_resume() noexcept {} }; // Lazy: template <typename F> void start(F&& callback) { // callback should take a single Try<T> as parameter, return value will // be ignored. a detached coroutine will not suspend at initial/final // suspend point. auto launchCoro = [](Lazy lazy, std::decay_t<F> cb) -> detail::DetachedCoroutine { cb(std::move(co_await lazy.coAwaitTry())); }; [[maybe_unused]] auto detached = launchCoro(std::move(*this), std::forward<F>(callback)); } ``` 是不是可以简化成如下:移除 `DetachedCoroutine` ? ```.cpp struct FinalAwaiter { bool await_ready() const noexcept { return false; } template <typename PromiseType> void await_suspend(std::coroutine_handle<PromiseType> h) noexcept { if (h.promise()._continuation) { // 如果调用者是协程,激活它;否则无需挂起并由编译器释放内存)。 h.promise()._continuation.resume(); } } void await_resume() noexcept {} }; // Lazy: template <typename F> void start(F&& callback) { if (!isReady()) { _coro.resume(); // 激活当前挂起的协程 } callback(coAwaitTry().await_resume()); // 获取协程运行结果 } ```
Activity