Confusion regarding struct lifecycle
Matt Elkins via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Feb 16 17:50:28 PST 2016
On Tuesday, 16 February 2016 at 08:18:51 UTC, Ali Çehreli wrote:
> When a temporary Foo object is moved into the array, the
> temporary object is set to Foo.init. This temporary object
> lives on the stack. In fact, all temporary Foo objects of
> Foo.this(int) live at the same location.
>
> After Foo(8) is moved into the array and set to Foo.init, now
> Foo(1) is constructed on top of it. For that to happen, first
> the destructor is executed for the first life of the temporary,
> and so on...
>
> There is one less Foo.init destruction because conceptually the
> initial temporary was not constructed on top of an existing
> Foo.init but raw memory.
I guess that makes sense. But doesn't it imply that a copy is
happening, despite the @disabled post-blit? The desired behavior
was to construct the Foos in place, like with a C++ initializer
list.
More information about the Digitalmars-d-learn
mailing list