У меня есть следующий конструктор:
class A {
template<class ...T>
A(std::initializer_list<T> && ... args);
}
И у меня есть код для этого класса:
A a1 = {{5.0f, 6.0f}, {-7.0f, 8.0f}};
A a2 = {{{5.0f, 3.f}, {6.0f, 7.f}}, {{-7.0f, 9.f}, {12.f, 8.0f}}};
a1
может быть скомпилировано и a2
не может бытьскомпилирован.Я понимаю, что фигурные скобки являются только синтаксическим сахаром и не делают тип по умолчанию, только при передаче его функции с аргументами, которые могут быть инициализированы с помощью initilizer_list (например, std::initializer_list<float>
в случае A
и переменной a1
).
Интересно, есть ли обходной путь, который может помочь в передаче любого измерения std::initializer_list<std::initializer_list<std::initializer_list<...>...>...>
в функцию / конструктор?