On Friday, 17 August 2012 at 00:13:58 UTC, bearophile wrote:
Mehrdad:
On the note of casting away const, I don't believe that is
the operation which is undefined, however modifying const is
undefined as it could be pointing to immutable data.
Oh, then that's not what I'd understood. Seems just like C++
then.
Are you sure?
Yes, I'm pretty sure that something like
const int x = 5;
int* p = const_cast<int*>(&x);
*p = 6;
is undefined behavior, because x is a const object.
However,
int y = 5;
const int& x = y;
int* p = const_cast<int*>(&x);
*p = 6;
is well-defined, because the object is mutable.
At least, that's my understanding of C++; feel free to correct me
if I'm wrong.