我有以下构造函数:
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
and变量的情况下a1
)。
我想知道,是否有任何变通办法可以帮助将任何维传递std::initializer_list<std::initializer_list<std::initializer_list<...>...>...>
给函数/构造函数?
我检查了文档,并尝试了几种不同的技巧,但无法正常工作。因此,基本的答案是不可能的。无法使构造函数或任何其他函数接受未定义数目的大括号列表的大括号列表,因为大括号列表没有类型,并且不能隐式转换为std::initilizer_list<...>
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句