std::array initializer list initialization in initialization list

Хотя мне очень нравятся новые возможности C++11, иногда я чувствую, что мне не хватает некоторых тонкостей.

Инициализация массива int работает нормально, инициализация вектора Element2 работает нормально, но инициализация массива Element2 не работает. Я думаю, что правильным синтаксисом должна быть некомментированная строка, но ни одна из попыток инициализации не увенчалась успехом.

#include <array>
#include <vector>

class Element2
{
    public:
            Element2(unsigned int Input) {}
            Element2(Element2 const &Other) {}
};

class Test
{
    public:
            Test(void) :
                    Array{{4, 5, 6}},
                    Array2{4, 5},
                    //Array3{4, 5, 6}
                    Array3{{4, 5, 6}}
                    //Array3{{4}, {5}, {6}}
                    //Array3{{{4}, {5}, {6}}}
                    //Array3{Element2{4}, Element2{5}, Element2{6}}
                    //Array3{{Element2{4}, Element2{5}, Element2{6}}}
                    //Array3{{{Element2{4}}, {Element2{5}}, {Element2{6}}}}
                    {}
    private:
            std::array<int, 3> Array;
            std::vector<Element2> Array2;
            std::array<Element2, 3> Array3;
};

int main(int argc, char **argv)
{
    Test();
    return 0;
}

Я пробовал это на g++ 4.6.1 и 4.6.2 под MinGW.

Как правильно инициализировать этот массив? Возможно ли это?

7
задан Nicol Bolas 5 February 2012 в 02:54
поделиться