On Friday, 17 August 2012 at 01:17:19 UTC, Mehrdad wrote:
How?
Jon said "you know that the elements aren't altered either - or
anything which the elements point to".
I just showed that the const-ness of getStuff() tells you
_nothing_ about that fact.
Did I miss something?
Yeah. Again, you can't modify __the const view__. It's legal for
const things to be mutable underneath. And it's legal to modify
mutable things via mutable views. Ergo, const things can change
that way. But that's not what he's trying to tell you.
If you want something to be guaranteed to never change through
any means, you use immutable. And if you find a way to mutate
immutable things (without casts), it's a bug, not a feature (and
thus should be reported).
I'm pretty sure everyone's aware of the inconsistency with
immutable and the constructors at this time (like the bug I
pointed out above), so that's kind of a weak point where the
programmer actually has to know what they're doing, but I'm sure
that'll be fixed at some point.