$ 5.2.11 / 7 - "[Примечание: в зависимости от тип объекта, операция записи через указатель, lvalue или указатель к члену данных в результате const_cast, который отбрасывает const-qualifier68) может производить неопределенное поведение (7.1.5.1). ] "
Формулировки этого раздела (C ++ 03) меня удивляют. Удивительны две вещи.
а) Во-первых, использование слова« может ». Почему это« может »? Другое места в Стандарте очень точно определяют поведение undefined
б) Почему отказ от константности изначально константного объекта не сразу «неопределенное поведение». Почему для запуска UB требуется запись ?