Вы действительно можете delete
указатель на const
.
Если Visual C ++ говорит иначе для программы, соответствующей стандарту, то это ошибка компилятора и должна быть
Ваша (или Microsoft?) программа не является стандартным C ++, поскольку у вас есть void
тип результата для main
.
В статье базы знаний, на которую вы ссылаетесь, говорится "Удаление"указатель на константу не должен быть разрешен по определению (ARM раздел 5.3.4) ", и, хотя это неверно, ссылка, которую он дает, верна.В разделе 5.3.4 ARM говорится, что «указатель на константу не может быть удален».Тем не менее, ARM был опубликован в 1990 году ...
C ++ был стандартизирован примерно десять лет спустя, в 1998 году, и в стандарте C ++ вы можете удалить указатель на const
.Это не указано в нормативном тексте;это указано, опуская ограничение.Однако стандарт C ++ 98 §5.3.5 / 2 содержит следующее ненормативное примечание :
указатель на const
тип может быть операндом delete-expression ;нет необходимости отбрасывать константу (5.2.11) выражения указателя, прежде чем он будет использован в качестве операнда delete-expression .
Теперь мы закончиличерез десять лет после этой стандартизации, через 20 лет после ARM.
Какую версию Visual C ++ вы используете?
Cheers & hth.,