Ten program to jedno wielkie undefined behaviour. W linijce piątej używasz rzutowania jawnego (tutaj: const_cast) do usunięcia kwalifikatora const, no i w tym nic złego nie ma. Jednak modyfikacja stałego obiektu (nawet jak odnosimy się do niego przez niestały wskaźnik/referencję) to niezidentyfikowane zachowanie. No i do takiej sytuacji doprowadza wyrażenie w linijce 6.
Jeszcze cytat ze standardu (5.2.11.6):
Depending on the type of the object, a write operation through the pointer, lvalue or pointer to data member resulting from a const_cast that casts away a const-qualifier may produce undefined behavior
Pozdrawiam!