casting away const and then mutating
Jonathan M Davis via Digitalmars-d
digitalmars-d at puremagic.com
Fri Jul 24 14:12:55 PDT 2015
On Friday, 24 July 2015 at 20:44:44 UTC, Steven Schveighoffer
wrote:
> The advantage of simply clarifying the spec is that the current
> compiler behavior (which should work) doesn't need to change,
> we just change the spec.
>
> Ideally, we should just fix the situation with tail-const and
> we could have the best answer.
Yeah. That needs to be fixed. As I understand it, it's feasible
without any language improvements, but it's horrific. Jonathan
Crapuchettes talked at one point about doing it at EMSI (and how
hard it was). The last time I tried it, I ran into problems with
recursive template definitions, though static if can probably
solve those.
Regardless, the situation with it is ugly and not well
understood, even if there is a solution, and ideally, we'd find a
way to implement it that was a lot easier and cleaner. Without
that, almost no one is going to be doing it - probably even if
there's an article on dlang.org explaining how - simply because
of how annoying it is to do.
> I think I'll give up on this argument. There isn't much use in
> putting in a rule for the spec that covers over a missing
> feature that we will likely add later.
>
> Also, I just thought of a better way to do this that doesn't
> require any casting.
>
> Forget this thread ever happened :)
Well, regardless of whether mimicking inout like we're talking
about with RedBlackTree should be considered defined behavior or
not, I think that the spec should be updated so that the
situation is clearer. It needs to be clear to the community at
large that you _cannot_ be casting away const and mutating simply
because you know that the data is mutable underneath rather than
immutable.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list