https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120453
--- Comment #11 from Iain Sandoe <iains at gcc dot gnu.org> --- so... if I add this - non-coroutine ... LazyTask<int> foo (detail::LazyTaskPromise& p) { decltype(auto) Gro = p.get_return_object(); return Gro; } we essentially get the same fail; ../temp-coro-tests/pr120453.ii: In function ‘QCoro::LazyTask<int> QCoro::foo(detail::LazyTaskPromise&)’: ../temp-coro-tests/pr120453.ii:93:10: error: use of deleted function ‘QCoro::LazyTask<int>::LazyTask(QCoro::LazyTask<int>&&)’ 93 | return Gro; | ^~~ ../temp-coro-tests/pr120453.ii:80:28: note: ‘QCoro::LazyTask<int>::LazyTask(QCoro::LazyTask<int>&&)’ is implicitly deleted because the default definition would be ill-formed: