Итак этот ответ заставило меня задуматься о сценарии, в котором вы присваиваете результат new
указателю на const
. AFAIK, нет причин, по которым вы не можете юридически const_cast
установить и фактически изменить объект в этой ситуации:
struct X{int x;};
//....
const X* x = new X;
const_cast<X*>(x)->x = 0; // okay
Но потом я подумал - что, если вы действительно хотите new
создать объект const
. Поэтому я попробовал
struct X{};
//....
const X* x = new const X;
и он скомпилирован!!!
Является ли это расширением GCC или стандартным поведением? У меня никогда это не наблюдается на практике. Если это стандартно, я начну использовать его, когда это возможно.