Я ожидаю, что следующий код будет отклонен, поскольку в 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