2011-10-15 103 views
1

我可以調用成員模板,模板模板成員函數嗎?或者我怎麼知道將其稱爲成員模板,以及它是如何理解的?什麼是會員模板?

例如:

對於情況答:我有一個類,如果我做它的成員函數模板成員函數,我把它叫做一個成員模板?對於情況B:我有一個模板類,如果我將它的模板成員函數作爲模板,我會將其稱爲成員模板,還是可以將其稱爲模板模板成員函數?

+0

找到一本關於C++的書,比如The C++ Programming Language。像這樣的每個問題都可以輕鬆解決。 – xis

+0

你怎麼稱呼它有什麼關係?當你必須把它描述給別人時,只表明你的意思。 (這將幫助我理解你在這裏也採取了什麼) – Dani

+0

我的意思是你怎麼仍然可以用另一個模板,一個成員模板調用成員模板函數?我覺得這個術語有點混亂。 – user103214

回答

7

對於這兩種情況你稱它爲成員模板。

template<typename T> 
struct A { 
    // this is not a template 
    void f(); 

    // but this is a member template 
    template<typename T> void g(); 
}; 

這是一個成員模板,因爲它是一個模板成員。成員函數f不是模板,而是類模板的成員函數。在C++中,不幸的是,這樣的事情沒有一個明確的術語,所以恰巧在標準中制定了某些規則來申請模板,但也打算應用於類模板的成員函數。許多規則需要列出所有喜歡的組合,如

function template 
member function of class template 
member function of nested class of a class template 
member function template 
... 

同樣適用於類模板的成員類。有人建議調用成員函數/類模板temploid或類似的東西。 Work is under way來解決這種狀況,但。

+0

有一個問題,在這兩種情況下將它們稱爲成員函數模板是否也有意義? – user103214

+3

+1用於解釋術語temploid - –