我有一些可變參數模板方法,它看起來像這樣: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