Почему это происходит?
Поскольку синтаксис доступен только для агрегатной инициализации. std::vector
не является агрегатом, поэтому его нельзя инициализировать агрегатом.
В C ++ 11 введена более общая инициализация списка, а также тип std::initializer_list
и конструктор для вектора и других контейнеров, которые будут используется с синтаксисом инициализации списка.
Статья, которую вы связали в комментариях, не идеальна:
Представленная в C ++ 03, std :: vector предоставляет .. .
std::vector
была введена в самой первой стандартной версии C ++ 98.
std::vector<int> array2 = { 9, 7, 5, 3, 1 }; // use initializer list to initialize array
std::vector<int> array3 { 9, 7, 5, 3, 1 }; // use uniform initialization to initialize array (C++11 onward)
Очень сложно не упомянуть, что первая строка также требует C ++ 11.