Reputation: 1018
I am trying to initialize a 2D std::array trough initializer lists however the compiler tells me that there are too many initializers.
e.g.:
std::array<std::array<int, 2>, 2> shape = { {1, 1},
{1, 1} };
Compiler error: error: too many initializers for ‘std::array<std::array<int, 2ul>, 2ul>’
But clearly there aren't too many. Am I doing something wrong?
Upvotes: 14
Views: 4320
Reputation: 523614
Try to add one more pair {}
to ensure we're initializing the internal C array.
std::array<std::array<int, 2>, 2> shape = {{ {1, 1},
{1, 1} }};
Or just drop all the brackets.
std::array<std::array<int, 2>, 2> shape = { 1, 1,
1, 1 };
Upvotes: 14
Reputation: 1
I would suggest (without even have trying it, so I could be wrong)
typedef std::array<int, 2> row;
std::array<row,2> shape = { row {1,1}, row {1,1} };
Upvotes: 7