https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95599
--- Comment #4 from Iain Sandoe <iains at gcc dot gnu.org> --- (In reply to Lewis Baker from comment #3) > Also, I'm not sure why GCC is evaluating the second operand to operator,() > first and why it is constructing resource{1} _after_ the coroutine has > suspended. Nothing should happen in the coroutine body between > await_suspend() and await_resume(). two problems - correctling the lifetime of awaitables I have already fixed locally (not ready to post yet, but). The second, handling of operator, needs a bit more.