On 2/5/14, 7:23 AM, Michel Fortin wrote:
On 2014-02-04 23:51:35 +0000, Andrei Alexandrescu
<[email protected]> said:
Consider we add a library slice type called RCSlice!T. It would have
the same primitives as T[] but would use reference counting through
and through. When the last reference count is gone, the buffer
underlying the slice is freed. The underlying allocator will be the GC
allocator.
Now, what if someone doesn't care about the whole RC thing and aims at
convenience? There would be a method .toGC that just detaches the
slice and disables the reference counter (e.g. by setting it to
uint.max/2 or whatever).
Then people who want reference counting say
auto x = fun();
and those who don't care say:
auto x = fun().toGC();
Destroy.
I don't think it makes much sense. ARC when used for D constructs should
be treated an alternate GC algorithm, not a different kind of pointer.
Why? The RC object has a different layout, so it may as well have a
different type.
Andrei