Ответ 1
Это плохо сформировано. gcc ошибочно принимает его, и clang, кажется, позволяет ему как расширение, так как он предупреждает об этом.
Я собираюсь привести последний проект, но это не имеет никакого значения. Инициализация списка работает следующим образом [dcl.init.list], где T - int
в этом случае:
- Если список инициализаторов является назначенным списком инициализаторов, [...] => он не
- Если T - совокупный класс [...] => это не
- Если T - массив символов [...] =>, это не так.
- Если T является агрегатом [...] => это не (только массивы и классы являются агрегатами)
- Если в списке инициализаторов нет элементов [...] => это не
- Если T является специализацией std :: initializer_list [...] => it not
- Если T - тип класса [...] => это не
- Если T является перечислением с фиксированным базовым типом [...] => it not
- Если в списке инициализаций имеется один элемент типа E [...] =>, то в списке с инициализатором не будет никакого типа, поэтому нет
- Если T является ссылочным типом [...] => это не
- Если в списке инициализаторов нет элементов [...] => это не
- В противном случае программа плохо сформирована