В праймере c ++ (5-е издание) упоминается, что назначение std :: array из фигурного списка значений недопустимо.
Поскольку размер правого операнда может отличаться отразмер левого операнда, тип массива не поддерживает присваивание и не позволяет присваивание из ограниченного списка значений.
Ниже приведен пример кода.
std::array<int, 10> a1 = {0,1,2,3,4,5,6,7,8,9};
std::array<int, 10> a2 = {0}; // elements all have value 0
a1 = a2; // replaces elements in a1
a2 = {0}; // error: cannot assign to an array from a braced list
Однако, когда я компилирую этот код с компилятором c ++ 11, он работает нормально.Это разрешено сейчас или я что-то упустил?