https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87680
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- Yes, there are dups. IIRC the problem is that every element of the array introduces a new try/finally block so that if one of the Foo objects throws an exception, all the earlier elements in the array get destroyed. That shouldn't be needed here, because Foo can never throw on construction.