On Tue, 30 Nov 2010 08:04:57 -0500, Steven Schveighoffer <schvei...@yahoo.com> wrote:

On Mon, 29 Nov 2010 17:21:27 -0500, Simen kjaeraas <simen.kja...@gmail.com> wrote:

Steven Schveighoffer <schvei...@yahoo.com> wrote:

Except the language says what results from your code (casting away const and then mutating) is undefined behavior. This means all bets are off, it can crash your program. I'm unsure how the compiler could take that route, but that's what's in the spec.

Maybe because of the way const works, it never really is undefined, but there will always be that loophole.

The thing is, immutable is implicitly castable to const, and immutable
data could be stored in write-protected memory. Apart from that, I believe
it is safe to cast away const.

One would have to ensure that data with mutable members never makes it into ROM. This should be easy for the compiler since the full type is always known at construction time.

I should clarify that this only applies if logical const is a language feature, not a library feature. So in the context of this sub-thread, you are right, one needs to be careful.

-Steve

Reply via email to