Как создать конструктор массива для моего класса?

Я хотел бы создать конструктор, похожий на конструктор массива int: int foo[3] = { 4, 5, 6 };

Но я хотел бы использовать его следующим образом:

MyClass<3> foo = { 4, 5, 6 };

В моем классе есть частный массив размера n:

template<const int n=2>
class MyClass {

    public:

        // code...

    private:

        int numbers[n];

        // code...

};

Ответ 1

Вам нужен конструктор, который принимает аргумент std::initializer_list:

MyClass(std::initializer_list<int> l)
{
    ...if l.size() != n throw / exit / assert etc....
    std::copy(l.begin(), l.end(), &numbers[0]);
}

TemplateRex прокомментировал...

Возможно, вы захотите предупредить, что такие конструкторы очень жадные и могут легко привести к нежелательному поведению. Например. MyClass не должен иметь конструкторов, принимающих пару int s.

... и нервничал, гиперактивный модератор мог его удалить, поэтому здесь он находится в относительной безопасности.: -)