https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66927
vehre at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |vehre at gcc dot gnu.org --- Comment #5 from vehre at gcc dot gnu.org --- I am not that bold anymore to interpret the nasty standard. I wanted to express, that the allocate(obj, source=func()) is now sufficient. I made some bad experience trying to interpret the standard and was told off not to do so. Therefore, I will not say "yes, it violates the standard" nor "no, it doesn't". Given there are many programs, that use the work-around you've shown, I am unsure what to do here. But you are right, ICE'ing is a no go.