我有一些可变参数模板方法,如下所示:
template<typename ... Args>
void Invoke(const char* funcName, Args ... args) const;
template<typename ... Args>
void Invoke(const char* funcName, Args ... args) const
{
SPrimitive params[] = { args ... };
SomeOtherInvoke(funcName, params, sizeof ... (Args));
}
Run Code Online (Sandbox Code Playgroud)
这里 SPrimitive - 只是一个简单的结构,带有任何原始类型的构造函数。
我想为一些复杂类型再做一个 Invoke 定义。这是我的问题:是否可以在 c++ 11/14 中使可变参数模板方法专业化?我的意思是这样的(为简单起见,让我的类型为 int):
template<int ... Args>
void Invoke(const char* funcName, Args ... args)
{
int params[] = { args ... };
SomeComplexInvoke(funcName, params, sizeof ... (Args));
}
Run Code Online (Sandbox Code Playgroud)
这里我想要一个特殊化,它接受任何 int 类型的参数计数,所以我可以这样称呼它:
Invoke("method", 2, 4 ,9);
Run Code Online (Sandbox Code Playgroud)