https://issues.dlang.org/show_bug.cgi?id=21983
--- Comment #1 from [email protected] --- Test case (run with current master): import core.stdc.stdio : puts, printf; struct S { private int id; this(this) { if (id == 2) throw new Exception(""); } ~this() { printf("Destroying %d at %p\n", id, &this); } } void main() { try { S[3] arr = [ S(1), S(2), S(3) ]; arr.dup(); } catch (Exception e) {} puts("Done"); } ==== Destroying 3 at 0x7fffcd3f3888 Destroying 2 at 0x7fffcd3f3884 Destroying 1 at 0x7fffcd3f3880 Done Destroying -968732576 at 0x7fea0ce90008 Destroying 2 at 0x7fea0ce90004 Destroying 1 at 0x7fea0ce90000 --
