2015-06-01 67 views
0

我有代碼,我想的typedef一個模板類以方便您閱讀:一個的typedef模板參數

template<int A, int B> 
using templateClass = templateClass<A,B>; 

void aFunction(templateClass& tc); 

int main(){ 
    templateClass<10, 34> tc; 
    aFunction(tc); 
} 

void aFunction(templateClass& tc){ 
    ... 
} 

,但我得到關於不模板標識符許多錯誤被發現。這應該怎麼做?我是想以此爲榜樣:

How to typedef a template class?

回答

5

templateClass不是一個類型;它是一個類型模板。定義模板化功能時,您仍然需要使用template關鍵字。

template<int A, int B> 
void aFunction(templateClass<A, B>& tc); 
5

別名模板是有用的,當你只知道提前一些模板參數:

template <class Value> 
using lookup = std::map<std::string, Value>; 

lookup<int> for_ints; 
lookup<double> for_doubles; 

目前還不清楚你的情況,你是否需要一個類模板的名稱:

template <class A, class B> 
class templateClass; 

template <class A, class B> 
using otherName = templateClass<A, B>; 

如果您已經知道您需要的類型:

typedef templateClass<int, double> int_double; 

,或者如果你只知道一個類型:

template <class B> 
using with_int = templateClass<int, B>; 

在任何情況下,你不能有相同名稱的別名爲一類,就像你做了templateClass