2015-06-26 74 views
0

簡短的問題,這些定義是相同的嗎?模板定義語法

1.

template<class T1> 
    template<class T2> 
    void function(T1 *a, T2*b); 

2.

template<class T1,class T2> 
    void function(T1 *a, T2*b); 
+1

不,第一個甚至沒有編譯。 –

+0

爲什麼這會被投票? – PnotNP

回答

2

不,他們是不一樣的。第一種情況不會作爲免費函數編譯(live example)。通常,當你有一個模板類,你必須在這一個函數,另一個模板參數

template <typename T1> 
class Foo 
{ 
public: 
    template<typename T2> 
    void function(T1 *a, T2*b); 
}; 

template<class T1> 
template<class T2> 
void Foo<T1>::function(T1 *a, T2*b); 

你的第二個例子是蠻好的,與兩個模板參數的函數,你要做的第一案。