On Sunday, 7 February 2016 at 21:49:24 UTC, Matt Elkins wrote:
I've been experiencing some odd behavior, where it would appear
that a struct's destructor is being called before the object's
lifetime expires. More likely I am misunderstanding something
about the lifetime rules for structs. I haven't been able to
reproduce with a particularly minimal example, so I will try to
explain with my current code:
[...]
The destructor you are seeing is from the assignment:
m_tileView = TileView(...);
This creates a temporary TileView, copies it to m_tileView, and
then destroys it. I suppose you want to move it instead. You need
to copy the handles from the temporary into the destination, and
then clear them out from the temporary to prevent them from being
released.
std.algorithm has a couple of move() overloads that might be
useful here.