我可以找到很多模板類的部分專業化的幫助,但我想部分專門化一個非模板類的方法。如何部分專門化非模板類的模板成員方法?
class TempMembMeth {
public:
template<typename T1, typename T2>
void templMethod1(int);
};
我的模板化方法實現:
template<typename T1, typename T2>
void TempMembMeth::templMethod1(int){
std::cout << "<T1,T2>templMethod1(int)" << '\n';
}
我完全符合規範的方法確定:
template<>
inline void TempMembMeth::templMethod1<char,char>(int){
std::cout << "<char,char>templMethod1(int)" << '\n';
}
可是我該怎麼辦部分規格?
template<typename T2>
inline void TempMembMeth::templMethod1<char,T2>(int){
std::cout << "<char,?>templMethod1(int)" << '\n';
}
我得到:「TempMembMeth :: templMethod1」:非法使用顯式模板參數 我無法與部分專業方法重新定義類,因爲該類沒有模板。它也不會讓我「重載」類中的模板化方法 - 它又抱怨非法使用顯式模板參數。
所以,如果這是可能的任何想法? 目前,我通過模板化課程來圍繞它工作,但我想知道如果沒有模板課程,這是否可能。
不能部分專門函數模板。 – 2014-08-29 15:46:27
[爲什麼函數模板不能部分專用?]的可能重複(http://stackoverflow.com/questions/5101516/why-function-template-cannot-be-partially-specialized) – IdeaHat 2014-08-29 15:48:05
您可以將實現轉發到模板(幫助者)類而不是整個類的模板。 – Jarod42 2014-08-29 15:56:49