https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121219
--- Comment #3 from Iain Sandoe <iains at gcc dot gnu.org> --- It's another chicken-and-egg issue in that we do not know the type of g_r_o when we first need to deal with the g_r_o_o_a_f maybe something like ... auto g_r_o; if (allocation_is_ok) { several_nested_cleanups... g_r_o = get_return_object (); g_r_o_cleanup... .... return (g_r_o); } else { g_r_o = get_return_object_on_allocation_fail (); return (g_r_o); }