Head Const
Shachar Shemesh via Digitalmars-d
digitalmars-d at puremagic.com
Wed Feb 17 08:32:26 PST 2016
On 16/02/16 12:31, Guillaume Piolat wrote:
> I'm trying to say it politely.
> D2 const story is more complicated than its competitors.
>
> Both D1 "final" and C++ const always felt more useful and practical to
> me that the whole D2 immutable/const/inout thing. The current scheme
> seems to have marginal value in practice, lots of complexity, and is
> harder to use well (Unqual, inout) etc. Constructors can break it. I
> don't know why we should be that happy about our constness, maybe
> someone can explain.
>
Seconded. It is one of the main tools I was using in C++ to avoid
introducing bugs that I find completely unusable in D.
I've tried to introduce it into code I'm writing. I'm used to such
things being a problem to add later for code that was not written this
way in advance. That's the case in C++ too. Here, however, there are
many cases where I simply couldn't get it to the finish line. Between
not being able to have head const, needing to mutate vars in a const
object (a la refcount) and the compiler deciding functions are pure, I
often end up facing a problem where I say "okay, forget it".
And that's a real shame. We have at least one case where we're
introducing runtime checks to make sure no one is accidentally changing
a global var put there for reference, where declaring it const would
have provided compile time assurance that we're okay.
Shachar
More information about the Digitalmars-d
mailing list