Я думаю, что соответствующая цитата:
§ 7.1.6.1 (4) из N3242:
За исключением того, что любой член класса, объявленный изменяемым, может быть изменен, любая попытка изменитьконстантный объект во время его жизни приводит к неопределенному поведению.
Примеры иллюстрируют точку с использованием const_cast
.Как отметил Джеймс: цитата может быть найдена в §7.1.5 в стандарте C ++ 03.
Небольшое уточнение: это правило языка позволяет компилятору использовать постоянную память (если она доступна)на целевой архитектуре), когда что-то объявлено const
.Без этого правила const
-ness всегда можно было бы отбросить, не опасаясь каких-либо последствий, и его использование было бы лишь вопросом дисциплины разработчика.Таким образом, вы можете, по крайней мере, сказать людям, что они вызывают UB, что обычно является хорошим сдерживающим фактором.Сам по себе const_cast
не имеет большого значения, поскольку не имеет значения, как вы обманываете компилятор, позволяя вам манипулировать объектом const
.