https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103871
--- Comment #2 from Egor Pugin <egor.pugin at gmail dot com> --- Repro #include <coroutine> #include <memory> #include <vector> struct s { s(std::vector<long> &&); }; struct async_task { struct promise_type { auto initial_suspend() const { return std::suspend_never{}; } auto final_suspend() noexcept { return std::suspend_never{}; } auto get_return_object() { return async_task{}; } void return_void() {} void unhandled_exception() {} }; bool await_ready() const { return false; } void await_suspend(std::coroutine_handle<> h) {} auto await_resume() {} }; auto g(auto f) { return async_task{}; } async_task f() { // comment out co_await to make error disappear co_await g(std::make_unique<s>(std::vector{0L})); // error //g(std::make_unique<s>(std::vector{0L})); // ok co_return; } int main() { f(); }