我在周圍工作的問題在下面的代碼中的問題... C++可變參數類模板和成員函數
#include <functional>
template<typename... ARGS>
class MyClass {
public :
void function(ARGS... args)
{
}
};
int main(int argc, char * argv[])
{
MyClass<int> myClassInt; // works fine
MyClass<int, float> myClassIntFloat; // works fine
MyClass<void> myClassVoid; // <---- won't compile
return 0;
}
鏘相當正確地拒絕編譯這個,如果我實例化無效 MyClass的,抱怨MyClass <void> :: function不是一個合法的定義。然而,我所需要的真正的類需要能夠在void上實例化這種類型的東西。我一直在盯着這個很長一段時間,我堅持什麼模板SFINAE jiggery-pokery我需要解決它。
我意識到我需要以某種方式專注於** void **的情況,但是我無法看到一種不會被一般可變參數情況所捕獲的方法。 – brunobignose
因爲使用'void'相當於聲明瞭無效的成員函數'void MyClass :: function(void args)'。專業化的確是解決你的問題的關鍵。 –
爲什麼不能'MyClass <>'? – Yakk