Рассмотрим следующий фрагмент:
auto f() { return void({}); }
int main() { f(); }
Что именно {}
в void({})
?
Как это интерпретируется?
Просто из любопытства, конечно. В любом случае, отпустите еще немного.
Обратите внимание, что оба GCC 6.1 и clang 3.8 скомпилируют его без ошибок (-std=c++14 -pedantic
).
Последний не жалуется, первый показывает предупреждение:
warning: list-initializer для неклассического типа не должен быть заключен в скобки
Используя -pedantic-errors
вместо этого, GCC заканчивается ошибкой, в то время как clang компилирует ее.
Является ли это несоответствие ошибкой одного из двух компиляторов?
Я имею в виду, это допустимый код, который должен быть принят или нет?