DIP1000: Scoped Pointers

Dicebot via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Tue Aug 16 11:58:09 PDT 2016


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.


More information about the Digitalmars-d-announce mailing list