Несоответствие расширений компилятора, проскальзывающих сквозь трещиныC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Несоответствие расширений компилятора, проскальзывающих сквозь трещины

Сообщение Anonymous »

Я ожидаю, что следующий код будет отклонен, поскольку в C++ не разрешены массивы нулевого размера. Однако у Clang, похоже, нет с этим проблем, и он открыто принимает это.

Код: Выделить всё

template
concept c = requires { T{}; };

static_assert(c); // clang ok, gcc nope, msvc nope
Я понимаю, что некоторые компиляторы, такие как Clang и GCC, могут фактически поддерживать массивы нулевого размера посредством расширения компилятора. Но является ли это расширенное поведение тем, чего я должен ожидать от компилятора при проверке синтаксиса ограничения? И верен ли ответ на этот вопрос в равной степени и для ошибок замены?
Должно ли ожидаемое поведение таких сценариев быть независимым от использования флага -pedantic? Обратите внимание, что Clang принимает этот пример кода, если включен флаг -pedantic-errors.
Демо

Подробнее здесь: https://stackoverflow.com/questions/790 ... the-cracks
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»