const_cast是否有某种未定义的行为?
是的 ,您的程序包含未定义的行为。
这意味着您不能对它的输出有任何期望。原因由C ++ 11标准的7.1.6.1/4给出:
除了可以声明任何声明的类成员
mutable(7.1.1)之外,在const对象的生存期内(3.8)进行任何尝试修改都会导致未定义的行为
第5.2.11 / 7段
const_cast包含进一步的警告:
[ 注
:取决于对象的类型,通过指针,左值或指向数据成员的指针的写操作可能会产生不确定的行为(7.1.6.1)const_cast,该操作会抛弃const-qualifier。—
尾注 ]



