Я просматриваю проект стандарта для С++ 14 прямо сейчас, и, возможно, моя легализация немного ржавая, но я не могу найти упоминания о разрешении инициализаций, таких как
std::array<int, 3> arr{1,2,3};
является законным. (EDIT: По-видимому, это законный синтаксис в С++ 11.) В настоящее время в С++ 11 мы должны инициализировать std:: array как
std::array<int, 3> arr{{1,2,3}}; // uniform initialization + aggregate initialization
или
std::array<int, 3> arr = {1,2,3};
Я думал, что где-то я слышал, что они расслабляли правила на С++ 14, поэтому нам не приходилось использовать метод двойной привязки при использовании единой инициализации, но я не могу найти фактическое доказательство.
ПРИМЕЧАНИЕ. Причина, по которой я забочусь об этом, заключается в том, что в настоящее время я разрабатываю тип multi_array и не хочу инициализировать его, как
multi_array<int, 2, 2> matrix = {
{{ 1, 2 }}, {{ 3, 4 }}
};