In C ++ 03, you can use this initialization only when defining an array:
double list[3][3][3] = {{{0,0,0},{0,0,0},{0,0,0}}, {{0,0,0},{0,0,0},{0,0,0}}, {{0,0,0},{0,0,0},{0,0,0}}};
The compiler warns that, in accordance with the current standard, it should not accept your code, even if it is able to process it using the upcoming standard rules, where {...} is called an external initializer.
In this particular case, when the array is a member and you want to initialize it to all zeros, you can just use initialization initialization in C ++ 0x:
struct test { double list[3][3][3]; test() : list() {} };
For members of POD types (which have an array of double ), the syntax above ( list() ) in the initializer list means that the element must be initialized with a value, which in fact means that all values will be set to 0