24-Sep-2014 18:55, Andrei Alexandrescu пишет:
On 9/24/14, 3:31 AM, Dmitry Olshansky wrote:
23-Sep-2014 19:13, Andrei Alexandrescu пишет:
On 9/23/14, 12:17 AM, Dmitry Olshansky wrote:
In my imagination it would be along the lines of
@ARC
struct MyCountedStuff{ void opInc(); void opDec(); }

So that would be a pointer type or a value type? Is there copy on write
somewhere? -- Andrei

It would be an intrusively counted type with pointer somewhere in the
body. To put it simply MyCountedStuff is a kind of smart pointer.

Then that would be confusing seeing as structs are value types. What
you're saying is that a struct with opInc() and opDec() has pointer
semantics whereas one with not has value semantics. That design isn't
going to fly.

Read that as
struct RefCounted(T){

        void opInc();
        void opDec();
}

The main thing is to let compiler know the stuff is ref-counted in some generic way.


For classes such a design makes sense as long as the class is no longer
convertible to Object. That's what I'm proposing for RCObject (and
Throwable that would inherit it).


Andrei


--
Dmitry Olshansky

Reply via email to