Я читаю проект стандарта для С++ 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
or
std::array<int, 3> arr = {1,2,3};
Я думал, что где-то слышал, что они смягчают правила в C++14, чтобы нам не приходилось использовать метод двойной скобки при использовании юниформ-инициализации, но я не могу найти реального доказательства.
ПРИМЕЧАНИЕ. Причина, по которой я забочусь об этом, заключается в том, что в настоящее время я разрабатываю тип multi_array и не хочу инициализировать его, как
multi_array<int, 2, 2> matrix = {
{{ 1, 2 }}, {{ 3, 4 }}
};