On Tuesday, 16 August 2016 at 18:55:40 UTC, Dicebot wrote:
On Tuesday, 16 August 2016 at 18:25:42 UTC, Meta wrote:
What about this?
struct Rnd
{
int* state;
}
void test()
{
scope rnd = new Rnd();
Rnd rnd2 = *rnd;
saveGlobalState(rnd2);
}
Same as far as I understand, because "from a lifetime analysis
viewpoint, a struct is considered a juxtaposition of its direct
members"
(https://github.com/dlang/DIPs/blob/master/DIPs/DIP1000.md#aggregates). You need to add one more level of indirection for things to start going complicated.
Ah no, sorry, I have missed that you allocate struct on heap.
Yes, this is simplified problem case indeed. Intention is that
such struct can be made @safe by making all pointer fields
private and adding scope semantics in getter methods but it is
hard to reason about details at this point.