Safe reference counting cannot be implemented as a library

PuglyWUgly via Digitalmars-d digitalmars-d at puremagic.com
Tue Oct 27 14:56:41 PDT 2015


> Really? I've seen tons of C++ code that's written using smart 
> pointers with objects living on the heap which then get passed 
> around all over the place.

  Yes there is lots of old C++ code that does this, largely 
because unique_ptr wasn't implementable until C++11 added R value 
refs and move semantics.

> Sure, a lot of stuff in D should be structs on the stack, but 
> there are plenty of cases where you need stuff on the heap, in 
> which case, you either have to let the GC take care of it 
> (which means no deterministic destruction), have something 
> specific own it and destroy it when it's no longer needed, or 
> reference count it so that it gets destroyed immediately after 
> it's no longer needed.

  on the heap == unique_ptr
  on the heap + multiple owners = shared_ptr

  If you work in a codebase that properly uses unique types, like 
Rust does by default, you soon notice how rare multiple owners 
actually is.




More information about the Digitalmars-d mailing list