Это «неопределенное поведение», что означает, что на основе стандарта вы не можете предсказать, что произойдет, когда вы попробуете это. Он может делать разные вещи в зависимости от конкретной машины, компилятора и состояния программы.
В этом случае чаще всего произойдет то, что ответ будет «да». Переменная const или нет - это просто место в памяти, и вы можете нарушать правила константы и просто перезаписывать ее. (Конечно, это вызовет серьезную ошибку, если какая-то другая часть программы зависит от постоянных константных данных!) [/ G2]
Однако в некоторых случаях - чаще всего для данных const static
- компилятора могут помещать такие переменные в область памяти, доступную только для чтения. MSVC, например, обычно ставит константные статические ints в .text сегменте исполняемого файла, что означает, что операционная система будет вызывать ошибку защиты, если вы попытаетесь записать на нее, и программа выйдет из строя.
В какой-то другой комбинации компилятора и машины может произойти нечто совершенно другое. Единственное, что вы можете точно предсказать, это то, что этот шаблон будет раздражать тех, кто должен прочитать ваш код.