Я пытаюсь написать класс-контейнер для векторной арифметики. Объекты статичны по размеру:
template<typename T, unsigned N>
class vec{
T data[N] = {0};
public:
vec(std::initializer_list<T> ini){
std::copy(ini.begin(), ini.end(), data);
}
}
Вот как далеко я зашел.
Но затем я протестировал класс std::array для сравнения и заметил, что он каким-то образом мог сделать статическое утверждение, если список инициализаторов был слишком длинным или коротким.
std::array<float, 2> a = {1, 2, 3, 4} <- instant error message from the visual studio ide
В моем классе мне пришлось бы проверять длину списка инициализаторов во время выполнения.
Я предполагаю, что классу std::array каким-то образом удается напрямую инициализировать данные с помощью нотации списка инициализаторов без класса std::initializer_list.
Можно ли инициализировать мой класс так же, как std::array?