On 23 September 2014 16:19, deadalnix via Digitalmars-d <digitalmars-d@puremagic.com> wrote:
On Tuesday, 23 September 2014 at 03:03:49 UTC, Manu via Digitalmars-d wrote:
I still think most of those users would accept RC instead of GC. Why not
support RC in the language, and make all of this library noise redundant?
Library RC can't really optimise well, RC requires language support to
elide ref fiddling.

I think a library solution + intrinsic for increment/decrement (so they can be better optimized) would be the best option.

Right, that's pretty much how I imagined it too. Like ranges, where foreach makes implicit calls to contractual methods, there would also be a contract for refcounted objects, and the compiler will emit implicit calls to inc/dec if they exist?
That should eliminate 'RefCounted', you would only need to provide opInc()/opDec() and rc fiddling calls would be generated automatically? Then we can preserve the type of things, rather than obscuring them in layers of wrapper templates...