On 30 September 2014 08:04, Andrei Alexandrescu via Digitalmars-d <digitalmars-d@puremagic.com> wrote: > On 9/29/14, 10:16 AM, Paulo Pinto wrote: >> >> Personally, I would go just for (b) with compiler support for >> increment/decrement removal, as I think it will be too complex having to >> support everything and this will complicate all libraries. > > > Compiler already knows (after inlining) that ++i and --i cancel each other, > so we should be in good shape there. -- Andrei
The compiler doesn't know that MyLibrary_AddRef(Thing *t); and MyLibrary_DecRef(Thing *t); cancel eachother out though... rc needs primitives that the compiler understands implicitly, so that rc logic can be more complex than ++i/--i;