Следующий код работает, как и ожидалось, для инициализации вектора структур:
#include <array>
struct node
{
std::string name;
std::string value;
};
const std::vector<node> reqFields ({
{ "query", tmpEmail },
{ "firstname", firstName },
{ "lastname", lastName }
});
Я хочу немного оптимизировать свой код для использования массива C ++ 11, учитывая, что мои данные статичны. Однако следующее не скомпилируется:
const std::array<node, 3>({
{ "query", tmpEmail },
{ "firstname", firstName },
{ "lastname", lastName }
});
Какой правильный синтаксис для инициализации массива? или, может быть, с этим у Visual Studio 15 проблемы?
станд :: вектор имеет конструктор, который принимает initializer_list
:
vector( std::initializer_list<T> init,
const Allocator& alloc = Allocator() );
но станд :: массив является совокупным и следует правилам агрегатная инициализация .
Так что вам нужно переключиться с ()
в {}
const std::array<node, 3> reqFields {
{{ "query", "tmp" },
{ "firstname", "firstName" },
{ "lastname", "lastName" }}
};
Других решений пока нет …