On Tuesday, 4 November 2014 at 16:07:11 UTC, thedeemon wrote:
On Tuesday, 4 November 2014 at 14:36:19 UTC, Chris wrote:
I'm still curious, though, how D handles this internally,
because data.data is still mutable while the other reference
to the same address (tmp) is not. What if I change data.data
while the other thread is being executed?
"immutable" is part of the static type system, it's a label
that only exists and makes sense at compile time, for compiler
and the programmer. Casting a mutable data pointer to immutable
data pointer is a no-op, just a copy of pointer. Address stays
the same, data stays the same. So if you mutate the data it
will lead to "immutable" data being changed just because it's
not really immutable, you've just fooled yourself when doing
the cast.
That's what I was thinking too.