2017-04-21 75 views
0

我有我想給一個參數包類型的方法,像這樣的模板類:語法參數包中的模板類

template<class T> 
class MyClass { 
public: 
    template<class U> 
    add(U u) {} 

    template<class U, typename... Args> 
    add(U u, Args... args) { 
    } 
}; 

注意TU都是一樣的類型。

我的問題很簡單:在這種情況下是否可以直接引用T而不是U?我有什麼作品,但如果我直接提到T,意圖會更清楚。

+0

你的意思是像'template add(T t,Args ... args)'? – NathanOliver

+1

你是什麼意思,「直接參考'T'」?在你的例子中'T'和'U'沒有任何相同的類型 – user463035818

+0

是的,我的意思是它們是相同的類型,但忘記澄清這一點。 –

回答

7

如果我理解正確的話,你只是想這樣的:

template<class T> 
class MyClass { 
public: 
    add(T t) {} 

    template<typename... Args> 
    add(T t, Args... args) { 
    } 
}; 

注意,這是你有什麼不同的:在原始代碼接受任何類型的add第一個參數,而該代碼只接受T

+0

謝謝,那很簡單。我可以發誓我之前已經嘗試了這一點,並得到了一個錯誤,但顯然在我的版本中有些細節是錯誤的。 –