所以这个答案让我想到了将结果赋给new指向a的指针的场景const.AFAIK,没有理由你不能合法地 const_cast将constness带走并在这种情况下实际修改对象:
struct X{int x;};
//....
const X* x = new X;
const_cast<X*>(x)->x = 0; // okay
Run Code Online (Sandbox Code Playgroud)
但后来我想 - 如果你真的想new创建一个const对象怎么办.所以我试过了
struct X{};
//....
const X* x = new const X;
Run Code Online (Sandbox Code Playgroud)
它编译!!!
这是GCC扩展还是标准行为?我在实践中从未见过这个.如果它是标准的,我会尽可能地开始使用它.