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