Obtener el mismo valor de la variable const incluso después de cambiarla a través de const_cast

Considere el siguiente fragmento de código:

int main()
{
    const int i=3;
    int *ptr;

    ptr=const_cast<int*>(&i);
    *ptr=5;

    cout<<"i= "<<i<<endl;  <------------------- statement 1
    cout<<"*ptr= "<<*ptr<<endl;  <------------- statement 2

    return 0;
}

Estoy obteniendo la salida como:

i= 3
*ptr= 5

http://ideone.com/Bvme6

¿Por qué es el valor dei ¿No se cambia a través del puntero?

Sé que descartar la constancia de una variable que se declara explícitamente como constante y modificar su valor es 'Comportamiento indefinido'. Tengo curiosidad por saber: ¿Es algún mecanismo de optimización del compilador que "el compilador reemplaza la variable en el programa con el valor"? Significa que el compilador interpreta la declaración 1 como:

cout<<"i= "<<3<<endl;

Incluso si la declaración

ptr=const_cast<int*>(&i);    

es reemplazado por

 ptr=(int*)(&i);

Estoy obteniendo la misma salida:http://ideone.com/5lzJA

Respuestas a la pregunta(5)

Su respuesta a la pregunta