В С++ можно выделить объект const в куче:
const Class* object = new const Class();
const_cast<Class*>( object )->NonConstMethod(); // UB
так что попытка записи в объект будет UB.
Я не понимаю, как такой объект будет отличаться от объекта, выделенного кучей, который не объявлен const:
const Class* object = new Class();
Я имею в виду, когда я выделяю объект в стеке, он переходит в автоматическое хранилище, которое является специфичным для реализации, и поэтому могут быть некоторые средства реализации, которые позволяли бы выделять объекты const каким-то особым образом, что дало бы UB, когда я пишите в объект.
Однако всякий раз, когда я использую new, компилятор должен испускать функцию operator new() invocation, и эта функция не может делать ничего другого - она просто распределяет память единообразно, независимо от того, был ли const в моем код.
Как объект const, выделенный для кучи, отличается от него не const, и как возможно поведение undefined, если я пытаюсь его изменить?