【发布时间】:2012-08-04 00:02:45
【问题描述】:
我对 C++2011 的可变参数模板还很陌生,我想知道是否存在执行以下操作的技巧:
template<typename T, unsigned int... TDIM> class VariadicTest
{
public:
static const unsigned int order_const = sizeof...(TDIM);
static const unsigned int size_const = // TDIM1*TDIM2*TDIM3...
static const unsigned int dim_const[order_const] = // {TDIM1, TDIM2, TDIM3...}
// if not possible :
// dim_const[64] = {TDIM1, TDIM2, TDIM3, 0, ..., 0}
};
做这样的事情有什么“诀窍”吗?
非常感谢。
【问题讨论】:
-
size_const应该很简单(创建一个constexpr可变参数模板函数,该函数返回头部乘以尾部的乘积——如果没有尾部则返回头部值)。数组初始化是棘手的部分... -
实际上,问题中提出的语法是无效的,因为您不能在成员的声明中提供静态数组的值......话虽如此,问题就像如果将初始化移到定义中,则很难:)
标签: c++ templates variadic-templates unpack