Ответ 1
На самом деле вы также можете написать следующее в С++ 11:
std::array<int, 3> arr{1,2,3};
Это вполне допустимый синтаксис.
Что такое не, разрешенный в С++ 11, хотя это что-то вроде этого случая (см. эту тему, я не хочу напишите здесь еще раз, это длинный пост). Поэтому, если вы спросите, что тогда да, мы можем опустить дополнительные фигурные скобки в С++ 14. Это предложение:
- Унифицированная инициализация массивов и агрегатных типов классов
-
Вступительное выражение гласит:
В этом документе предлагается небольшая релаксация правил для выравнивания фигурных скобок от агрегатной инициализации, чтобы сделать инициализацию массивов и агрегатов классов более однородными. Это изменение требуется для поддержки агрегатных классов классов с одним совокупным элементом, которые ведут себя аналогично их аналогам массивов (т.е.
std::array
).
Надеюсь, что это поможет.