Mihai Bişog Mihai Bişog - 3 years ago 178
C++ Question

How do you initialize (through initializer lists) a multidimensional std::array in C++11?

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?

Answer Source

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 };
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download