Изменилось ли в прошлом поведение при удалении указателей на константу?

Я получил следующий тестовый код из http://support.microsoft.com/kb/131322 :

const int * pi   = new int(1000);
const char * pch = new char(65);

void main(void)
   {
   delete  pi  ;// Error C2710:cannot delete a pointer to a const object
   delete  pch ;// Error C2710:cannot delete a pointer to a const object
   }

На этой странице Microsoft заявляет, что удаление указателя на константу запрещено, что мне кажется логичным. Вы не хотите, чтобы функции, которым вы указываете указатель на const, удаляли экземпляр за вашей спиной.

Достаточно странно, вопрос Удаление указателя на const (T const *) указывает, что он ЕСТЬ разрешено, и это даже имеет смысл.

И действительно, если я компилирую код со страницы MSDN с Visual Studio 2010, он компилируется правильно (даже без предупреждений при компиляции с / W4).

Изменилось ли поведение в отношении удаления указателей на константу в стандарте C ++ в прошлом? Или это было изменено в Visual Studio?

7
задан Community 23 May 2017 в 12:21
поделиться