I've got a situation which can be summarized in the following:
class Test
{
Test();
int MySet[10];
};
is it possible to initialize MySet
in an initializer list?
Like this kind of initializer list:
Test::Test() : MySet({1, 2, 3, 4, 5, 6, 7, 8, 9, 10}) {}
Is there any way to initialize a constant-sized member array in a class's initalizer list?
While not available in C++03, C++11 introduces extended initializer lists. You can indeed do it if using a compiler compliant with the C++11 standard.
struct Test {
Test() : set { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } { };
int set[10];
};
The above code compiles fine using g++ -std=c++0x -c test.cc
.
As pointed out below me by a helpful user in the comments, this code does not compile using Microsoft's VC++ compiler, cl. Perhaps someone can tell me if the equivalent using std::array
will?
#include <array>
struct Test {
Test() : set { { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } } { };
std::array<int, 10> set;
};
This also compiles fine using g++ -std=c++0x -c test.cc
.