RCArray is unsafe

Zach the Mystic via Digitalmars-d digitalmars-d at puremagic.com
Tue Mar 3 20:31:38 PST 2015

On Wednesday, 4 March 2015 at 03:46:36 UTC, Zach the Mystic wrote:
> Just my own past posts. My suggestion is based on the compiler 
> doing all the work. I don't know how it could be tested without 
> hacking the compiler.

I think that part of the fear of my idea is that I want structs 
to get some of the behavior suggested in DIP74 for classes, i.e. 
the compiler inserts calls to opAddRef/opRelease on its own at 
certain times. Since structs only have postblits and destructors, 
there's no canonical way to call them as separate functions. The 
behavior I'm suggesting would only be good if you had a 
refcounted type, which means it's superfluous if not harmful to 
insert it "just because" in other types of structs.

If it turns out that some of the behavior desirable for 
refcounted classes is useful for structs too, it may be necessary 
to hint to the complier that a struct is indeed of the refcounted 
type. For example, "void opAddRef();" and "void opRelease();" 
could be specially recognized, with no definitions even permitted 
(error on attempt), implying "alias opAddRef this(this);", "alias 
opRelease ~this;".

More information about the Digitalmars-d mailing list