RCArray is unsafe

Zach the Mystic via Digitalmars-d digitalmars-d at puremagic.com
Wed Mar 4 11:22:24 PST 2015


On Wednesday, 4 March 2015 at 18:17:41 UTC, Andrei Alexandrescu 
wrote:
> Yah, this is a fork in the road: either we solve this with 
> DIP25 + implementation, or we add stricter static checking 
> disallowing two lent references to data in the same scope.

The third solution is to keep track of lifetimes, recognize 
refcounted types for structs the same as suggested for classes in 
DIP74, and wrap the lifetime of the subreference `t.s` in an 
opAdd/Release cycle for `t`, as illustrated in my other reply. 
You could have the compiler recognize a refcounted struct by 
simply declaring "void opAddRef();" and "void opRelease();", with 
the compiler automatically aliasing them to "this(this)" and 
"~this".


More information about the Digitalmars-d mailing list