On Saturday, 27 September 2014 at 19:11:08 UTC, Andrei Alexandrescu wrote:
On 9/27/14, 1:11 AM, Foo wrote:
Consider:

struct MyRefCounted
   void opInc();
   void opDec();
   int x;
}

MyRefCounted a;
a.x = 42;
MyRefCounted b = a;
b.x = 43;

What is a.x after this?


Andrei

a.x == 42
a.ref_count == 1 (1 for init, +1 for copy, -1 for destruction)
b.x == 43
b.ref_count == 1 (only init)

So then when does the counter get ever incremented? -- Andrei

increment: by postblit call
decrement: by dtor call

But if you ask me, we should either use a valid library solution like: http://dpaste.dzfl.pl/b146ac2e599a (it is only a draft of 10 min work)
Or we should extend UDA's, so that:
@rc(int) x; is rewritten to: Rc!int x;

Reply via email to