https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100476
--- Comment #5 from Iain Sandoe <iains at gcc dot gnu.org> --- (In reply to Jason Merrill from comment #3) > (In reply to Jason Merrill from comment #2) > > (In reply to Iain Sandoe from comment #1) > > > I am by no means an expert at reading standardese - and it might be that > > > I'm > > > not alone, (library writers might have made the same assumption) but it > > > seems to me that: > In general, you can't construct an object from a void expression; a void > expression can't be used as an operand for anything. well, we were not trying to do that - the erroneous behaviour was treating a void return from g_r_o as meaning we should construct the return value like: retval = CoroRetType();