On Monday, 16 November 2015 at 17:12:06 UTC, Steven Schveighoffer wrote:
One thing, however, is that if you can mark an island of space within an object as ALWAYS mutable, the compiler can know this and avoid optimizing away access to those pieces. It would have to be clearly marked as such, so the optimizations on non-marked data could still happen.


Yes, that's a necessity, simply to stop the compiler from applying breaking optimizations. However, then we would lose the guarantees immutable provides, in particular implicit sharing, and the implications for purity. That's why this mutability needs to be restricted, so that it has no observable effects.

I think it could be done, because logical const is possible via a global lookup table. Any time you go through a cast, however, this could easily break down.

That's a really good argument: We don't actually introduce new semantics, we only want make existing techniques more accessible and efficient.

Reply via email to