【发布时间】:2015-01-02 04:49:15
【问题描述】:
如何定义方法签名,使其接受与可变参数模板类定义相同数量的参数?例如如何定义一个数组类:
template<typename T, int... shape>
class Array
{
public:
T& operator () (???);
};
所以你可以这样称呼它:
Array<int, 3, 4, 5> a;
a(1, 2, 3) = 2;
【问题讨论】:
-
我认为这应该可行:
T& operator()(decltype(shape)... args); -
@0x499602D2 概括为:
T& operator()(decltype(shape, X())... args);用于更改类型。 -
@Deduplicator 确实如此。但我以为他想要
int。 -
太好了,所有方法都有效,谢谢大家!
-
如果您只是在寻找
std::array的多维版本,您可以使用variadic array alias trick 为自己节省一些工作。
标签: c++ templates c++11 variadic-templates