我知道将const指针转换为非const类型可能是未定义的行为,但是如果该指针最初不是const怎么办?
int i = 0;
int * pi = &i;
const int * const_pi = const_cast<const int*>(pi);
int * non_const_pi = const_cast<int*>(const_pi);
*non_const_pi = 0;
*non_const_pi = 1;
int j = *non_const_pi;
Run Code Online (Sandbox Code Playgroud)
有没有未定义的行为?如果有的话,它们在哪里发生?编译器可以假定它non_const_pi是从const指针强制转换的,并且不执行任何修改吗?