我有一些可变参数模板方法,它看起来像这样:C++可变参数模板方法专业化
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));
}
这里SPrimitive - 只是一个简单的结构与任何原始类型的构造函数。
我想为一些复杂类型再做一个Invoke定义。这里是我的问题: 是否有可能在C++ 11/14中创建可变参数模板方法专业化? 我的意思是这样(为简单起见让我喜欢的类型将是int):
template<int ... Args>
void Invoke(const char* funcName, Args ... args)
{
int params[] = { args ... };
SomeComplexInvoke(funcName, params, sizeof ... (Args));
}
在这里,我希望有一个专业化,这需要int类型的任何参数算的,所以我可以调用它,就像这样:
Invoke("method", 2, 4 ,9);
不是专业化,但你可以与超载和SFINAE。 – Jarod42
但'std :: initializer_list'似乎更合适(使用'Invoke(“method”{2,4,9})'语法)。 –
Jarod42