Документирование преобразования «неверное значение указателя» в реализациях C ++

Согласно стандарту C ++, для каждой реализации обязательно задокументировать «поведение, определяемое реализацией»:

1.3.11[defns.impl.defined] поведение, определяемое реализацией

поведение, для правильно сформированной программы построить и исправить данные, которые зависят от реализации и что каждая реализация документирует

А чтение неверного значения указателя имеет поведение, определяемое реализацией (см. 4.1. Преобразование Lvalue-в-значение[conv.lval]):

если объект, на который ссылается glvalue, содержит недопустимое значение указателя (3.7.4.2, 3.7.4.3), поведение определяется реализацией.

(цитата из черновика n4527, но многословно, что «Переадресация через недопустимое значение указателя и передача недопустимого значения указателя в функцию освобождения имеет неопределенное поведение. Любое другое использование недопустимого значения указателя имеет поведение, определяемое реализацией.» было в 3.7. 4.2 Распределение функций[basic.stc.dynamic.deallocation] так как хотя бы проект n3485)

Однако многие популярные реализации не определяют это поведение, и многие эксперты описывают это как «неопределенное поведение».

Вероятная причина пропуска четкой документации заключается в том, что, насколько я могу судить, оценка «недопустимых значений указателя» отсутствует в «Индексе поведения, определяемого реализацией», который появляется в черновиках стандарта после приложений.

Является ли это дефектом в стандарте, и существуют ли какие-либо открытые отчеты о дефектах или действия комитета, принятые после C ++ 14 в отношении этого?

Ответы на вопрос(1)

Ваш ответ на вопрос