DIP69 - Implement scope for escape proof references

Dicebot via Digitalmars-d digitalmars-d at puremagic.com
Mon Dec 15 03:32:10 PST 2014


On Monday, 15 December 2014 at 11:23:28 UTC, Marc Schütz wrote:
> I think there are two cases that are relevant. 1) the tree 
> nodes don't own their children, instead they are managed by - 
> let's say - a region allocator, and 2) the tree nodes do own 
> their children. In both cases, they can declare the children as 
> scope members (assuming a proposal that allows that).
>
> The only case I can think of where the children should not be 
> scope members is when they are GC managed. But in this case, 
> you don't need to worry about references to them escaping.
>
> Therefore, I don't see a use case for transitivity of scope, 
> from a conceptional point of view. If a particular design makes 
> transitivity necessary, this points to a flaw in the design, 
> IMO.

Actually I think in neither case children should be declared as 
scope members. Instead those should be declared as private 
members but methods that return pointers/references to children 
would be declared to return (transitive) scope 
pointers/references.

For me "scopeness" is a property of "view", not object itself - 
this also makes ownership method of actual data irrelevant. Only 
difference between GC owned data and stack allocated one is that 
former can have scoped view optionally but for the latter 
compiler must force it as the only available.


More information about the Digitalmars-d mailing list