const as default for variables
deadalnix via Digitalmars-d
digitalmars-d at puremagic.com
Wed Mar 18 02:28:34 PDT 2015
On Wednesday, 18 March 2015 at 06:24:38 UTC, Zach the Mystic
wrote:
> I'm starting to think that refcounting is precisely the
> opposite of ownership, useful only for when its *impossible* to
> track ownership easily. Otherwise why would you need a refcount?
>
It is not the language's problem. If the language defines
ownership, the you can define all kind of RC systems as library
type by deferring the ownership of things to the RC library.
The good thing about it is that it doesn't limit the library
solution to be ref counting, but it can be anything else, or any
refcounting strategy.
Indeed, internally, the RC system have to play unsafe, but as
long as it has to free, it has to play unsafe anyway. The
important point is that it can provides a safe interface to the
outside world.
The inc/dec elision problem is simply a copy optimization
problem. Framing it as a refcounting problem is the wrong way to
think about it. You would like to elide copy as much as possible.
The first element for this is borrowing. You can pass borrowed
things around without needing to have copies.
The general problem of the assignation comes up when something is
borrowed several time and assigned. const is obviously a
situation where we can elide when borrowing, but that is not the
only one.
In that situation, only borrowing the RC wrapper require a copy
(borrowing the wrapped do not). Note that borrowing the wrapped
is most likely what you want in the first place in most situation
(so the code manipulating the borrowed do not need to rely on a
specific memory management scheme, which allow for versatile
libraries) so copy elision is what you'll in most situation as
well.
Solid core constructs are much better that attribute
proliferation.
More information about the Digitalmars-d
mailing list