https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109323
--- Comment #7 from Enrico Maria De Angelis <enricomaria.dean6elis at gmail dot com> --- (In reply to Arsen Arsenović from comment #6) > is it possible to implement any correct terminating coroutine within those > restrictions? Is it a requirement that a coroutine must be terminate-able? I mean, if a coroutine has neither of those two functions, but it's never resumed after a suspension via co_await, what's the problem? Take for instance a generator coroutine, std::generator<int> foo() { int i{}; while (true) { co_yield i++; } } it will never terminate, so why should it have return_value or return_void?