On 2/28/15 7:30 PM, Manu via Digitalmars-d wrote:
On 1 March 2015 at 13:13, Andrei Alexandrescu via Digitalmars-d
<digitalmars-d@puremagic.com> wrote:
Inserting calls to opAddRef and opRelease, and the rules that allow their
elision, follow quite closely (albeit not 100% identically) the rules for
inserting calls to copy constructors and destructors.

The most important case to be elided is the function call case.
Passing struct to function results in postblit and destructor for
every call.
If postblit and destructor were sufficient, we would have been
satisfied with RC in D for years.

RefCounted has been in there for quite a while and worked with structs. Its main problem was it wasn't safe. With DIP25 safety of structs (including those that use reference counting for their payload) becomes a reality.

Okay, so if I'm not better off then I've always been, what is the good
of DIP74 to me?


The title reads "Reference Counted Class Objects".

That title is not immutable.
If DIP74 is a starting point, and you can see extension to the struct
case in the future, then I'll let this go now.

It would be mightily confusing to add opAddRef and opRelease calls for structs that follow the constructors/destructors ever so closely. It might be more productive to look into improvements of optimizations related to copying objects.


Andrei

Reply via email to