【发布时间】:2019-06-27 11:47:48
【问题描述】:
是否允许:
const int const_array[] = { 42 };
int maybe_inc(bool write, int* array) {
if (write) array[0]++;
return array[0];
}
int main() {
return maybe_inc(false, const_cast<int *>(const_array));
}
特别是,只要对象没有像示例中那样实际修改,是否可以抛弃const_array 的常量,它被定义为常量? p>
【问题讨论】:
-
确实,只要没有实际执行写入,您就是安全的。
const_cast本身不会导致 UB。另见(可能重复?):stackoverflow.com/questions/29883327/…
标签: c++ constants undefined-behavior const-cast