В стандарте С++ 03 я вижу:
5.3.5 Удаление
2 Если операнд имеет тип класса, операнд преобразуется в тип указателя, вызывая вышеупомянутую функцию преобразования, а преобразованный операнд используется вместо исходного операнда для остальной части этого раздела. В любом другом случае, если значение операнда
delete
является нулевым указателем, операция не имеет эффекта. В первом альтернативе (объект удаления) значение операндаdelete
должно быть указателем на объект без массива или указатель на под-объект (1.8), представляющий базовый класс такого объекта (раздел 10). Если нет, то поведение undefined. Во втором альтернативе (удалить массив) значение операндаdelete
должно быть значением указателя, которое было получено из предыдущего массива new-expression.72) Если нет, то поведение undefined.
В Стандартном проекте С++ 11 (N3337) я вижу:
5.3.5 Удаление
2 Если операнд имеет тип класса, операнд преобразуется в тип указателя, вызывая вышеупомянутую функцию преобразования, а преобразованный операнд используется вместо исходного операнда для остальной части этого раздела. В первом альтернативе (удалить объект) значение операнда
delete
может быть значением нулевого указателя, указателем на объект без массива, созданный предыдущим новым выражением, или указатель на подобъект (1.8), представляющий базовый класс такого объекта (раздел 10). Если нет, то поведение undefined. Во втором альтернативе (удалить массив) значение операнда удаления может быть значением нулевого указателя или значением указателя, которое было результатом предыдущего нового выражения. Если нет, поведение undefined.
Я выделил различия между спецификациями в двух стандартах. Мне показалось странным, что стандарт 2003 года был более решительным в отношении того, как нужно указывать указатели NULL, в то время как в стандарте 2011 года ничего не говорится о том, что должна делать реализация.
-
Изменилось ли словосочетание стандарта С++ 11 между стандартом проекта и фактическим стандартом? Если да, то как?
-
Если формулировка проекта стандарта остается неизменной в фактическом стандарте, что послужило основанием для изменения очень сильного заявления почти ничего с 2003 по 2011 год?