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