digitalmars.D.bugs - [Issue 20285] New: Struct destructor called multiple times in
- d-bugmail puremagic.com (40/40) Oct 08 2019 https://issues.dlang.org/show_bug.cgi?id=20285
https://issues.dlang.org/show_bug.cgi?id=20285 Issue ID: 20285 Summary: Struct destructor called multiple times in dynamic arrays Product: D Version: D2 Hardware: x86_64 OS: Linux Status: NEW Severity: normal Priority: P1 Component: druntime Assignee: nobody puremagic.com Reporter: graham.stjack internode.on.net With dmd 2.088, this code: import std.stdio; struct Foo { int value; disable this(this); ~this() { writefln("Destroying foo %s", value); } } void main() { Foo[] array; array.length = 1; array[0] = Foo(0); array.length = 2; array[1] = Foo(1); } produces this output: Destroying foo 0 Destroying foo 0 Destroying foo 0 Destroying foo 1 Destroying foo 0 when what I want is: Destroying foo 0 Destroying foo 1 I assume that despite Foo being uncopyable, it is being copied by the dynamic array implementation rather than being moved. --
Oct 08 2019