Разрешено ли компиляторам поддерживать функцию, которая удалена в стандарте?
Стандарт не позволяет этого. AFAIK, как правило, он не обрабатывает особенности, которые раньше были на языке (не отделяет их от несуществующих функций).
Если компилятор не делает ' t диагностировать эту ошибку (то есть не выдает ошибку или предупреждение) с определенной конфигурацией c (т.е. с указанием c флагов), тогда она не соответствует стандарту в этой конфигурации.
С какой целью?
Обратная совместимость (что еще может быть). В частности, он позволяет использовать как старые, так и новые функции в одной единице перевода.
Это может быть полезно, если вы используете библиотеку, которая использует удаленную функцию в своих заголовках, но хотите использовать новую языковые функции в вашем собственном коде.
Или, если вы по какой-то причине хотите использовать удаленную функцию в своем собственном коде вместе с новыми функциями.
Обратите внимание, что абсолютного соответствия стандарту практически невозможно достичь.
Некоторые поставщики компиляторов заботятся о соответствии больше, чем другие. Microsoft, как правило, меньше заботится об этом (или, по крайней мере, раньше они над этим работали).