October 08, 2019 [Issue 20285] New: Struct destructor called multiple times in dynamic arrays | ||||
---|---|---|---|---|
| ||||
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. -- |
Copyright © 1999-2021 by the D Language Foundation