On Thursday, 11 February 2016 at 00:54:21 UTC, Ola Fosheim
Grøstad wrote:
On Thursday, 11 February 2016 at 00:32:11 UTC, Matt Elkins
wrote:
unique owner falls out of scope. This situation occurs a lot
for me, and RAII plus move semantics are pretty close to ideal
for handling it. Yes, it can be approximated with reference
counting, but reference counting has its own downsides.
C++ unique_ptr is a semantically a reference-counting ptr with
a max count of 1.
True, but with unique_ptr the max count is enforced by the
compiler and can only be subverted by a programmer explicitly
choosing to do so -- if that is possible with normal reference
counting, I don't know of a way.
Moreover, there is no heap allocation required which may or may
not matter for a given use case. Of course there are ways to
avoid or mitigate heap allocations for reference-counted
pointers, but the point is that unique_ptr has the next best
thing to no overhead at all, which allows it to be used in a
broader range of contexts.
In C++ it is a type system issue, and the actual semantics are
up to the programmer. In
D it is just copy and clear, which does extra work and is less
flexible _and_ forces
the copying to happen so you cannot escape it.
Fair point.