|
|
1
2
主要问题是不能使数组维数本身可变。因此,无论采用哪种方法,您都几乎肯定需要某种递归方法来处理单个数组层。这种方法到底应该是什么样的,主要取决于一旦它被提供给您,您打算如何处理阵列。 如果你真正想要的是一个可以被赋予任何多维数组的函数,那么只需编写一个可以被赋予除 only exists 只要任何东西是一个数组:
然而,这本身很可能不会让你走得很远。要对给定的数组执行任何有意义的操作,很可能需要对子数组进行递归遍历。除非你真的只是想看看结构的最顶层。 另一种方法是使用递归模板剥离各个数组级别,例如:
不过,我建议至少考虑使用
更新:计算扁平化 n D索引执行一个常规 n 带静态维度的D数组,我将引入一个助手类来封装从 n D索引:
然后:
|
|
|
Joald · 使用折叠表达式检查可变模板参数是否唯一 8 年前 |
|
|
sylvain · 可变模板和SFINAE 8 年前 |
|
|
Kirill Korolev · 可变模板和函数覆盖 8 年前 |
|
|
Graznarak · 静态断言引用封闭模板类 8 年前 |
|
|
sjaustirni Keyki · 如何使用模板创建编译时类字段? 8 年前 |
|
|
user8922003 · C++boost::boost的accept处理程序中的asio可变模板运算符::asio::basic\u socket\u acceptor::async\u accept() 8 年前 |
|
|
Belfer4 · 如何在类模板整数列表上展开? 8 年前 |