On Tuesday, 4 February 2014 at 23:51:35 UTC, Andrei Alexandrescu
wrote:
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.
Andrei
RC need GC to collect loops. So you want to have the GC at the
lowest level.
That being understood, I'd rather connect things the other way
around.
auto x = foo();
auto x = foo().toRC();