Инициализация std::array в C++20
Подскажите, пожалуйста, почему в C++20 (не знаю, как в других версиях) не работает следующий код?
#include <iostream>
#include <array>
struct Car
{
std::string make{};
std::string model{};
};
int main()
{
// error: too many initializers for ‘std::array<Car, 3>’
std::array<Car, 3> cars = {{"1", "11"}, {"2", "22"}, {"3", "33"}};
return 0;
}
Вместо этого я должен использовать uniform-инициализацию:
std::array<Car, 3> cars {{{"1", "11"}, {"2", "22"}, {"3", "33"}}};
Хотя если брать массив не структур, и фундаментального типа, то всё работает:
#include <iostream>
#include <array>
int main()
{
// объявление std::array<int, 2> nums {{3, 4}}; тоже работает
std::array<int, 2> nums = {3, 4};
return 0;
}