2014-04-04 78 views
0

比方說,我有一個模板函數對象:專營模板仿函數在模板類

template <class U, class V> 
struct Converter 
{ 
    V& operator() (const U&, V&) const; 
}; 

我要「專注」這個轉換器可在模板類和非模板類:

template<> 
struct Converter <template<class> MyTemplateClass, MyNonTemplateClass> 
{ 
    //I can't use MyTemplateClass without specializing it 
    //even if I don't need it to perform the computation 
}; 

當然,這是行不通的。你會怎麼做才能達到類似的結果?

回答

3

您需要將template<class> MyTemplateClass的類型上移到Converter的模板聲明中。

template<class T> 
struct Converter <MyTemplateClass<T>, MyNonTemplateClass> 
{ 
    //... 
}; 
+0

我會試試這個,讓你知道它是否有效。謝謝 ! – matovitch

+0

這被稱爲*「部分模板專業化」* – Manu343726

+0

我很好奇我的編譯器的推理能力......並且它工作得很好(我沒有必要指定T類)。再次感謝 ! – matovitch