我有以下构造函数:
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<...>...>...>
函数/构造函数?
最佳答案
我检查了文档并尝试了几种不同的 hack,但它不起作用。
所以,基本的答案是不可能的。
不可能使构造函数或任何其他函数接受未定义数量的大括号列表的大括号列表,因为大括号列表没有类型并且不能隐式转换为 std::initilizer_list<...>
.
关于c++ - 具有可变多维 initializer_list 的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54738709/