Исходя из другого вопроса:
Поскольку С++ 17, auto x0{1, 2, 3, 4}; , ранее выводящий список инициализаторов, больше не допускается (конечно, мы можем использовать auto x0 = {1, 2, 3, 4}; вместо этого...). Теперь, как всегда, избегаем равномерной инициализации (например, std::vector<int> v({1, 2, 3, 4});, т.е. Явный вызов конструктора с списком инициализации в качестве аргумента) и по аналогии с четко определенным auto x(7); (конструкцию я никогда не буду использовать сам...), я придумал следующее:
auto x({1, 2, 3, 4});
// -> std::initializer_list<int> x({1, 2, 3, 4});
Это скомпилировано с GCC 7.2.0 (mingw64), но выдается предупреждение (в то время как прокомментированная версия снова не была):
list-initializer for non-class type must not be parenthesized
Я не мог найти ничего подходящего в стандарте, так что теперь вопрос (из чистого интереса...):
Почему это не разрешено? (Является ли это охватываемым стандартом или нам нужно считать это ошибкой GCC?)