2011-04-25 123 views
6

是什麼在兩種方式模板在C++中,類型名稱和

template<typename T> & template<class T>

下面寫C模板之間++的區別,當我們喜歡他們在彼此之上? 如果兩者都是相同的,那麼爲什麼我們有他們兩個,如果足夠了?

+0

我更喜歡'typename',因爲我的模板接受非類類型(但是,它們完全相同)當然, – Cubbi 2011-04-25 10:28:43

+0

模板中的C++關鍵字'typename'和'class'不同](http://stackoverflow.com/questions/2023977/c-difference-of-keywords-typename-and-class-in-templates) – Matt 2011-11-14 11:22:02

回答

9

沒有任何區別。我更喜歡第一個(大部分),但這是我個人的品味。這種語言在它們之間沒有任何區別。

對於模板參數,關鍵字typenameclass是等效的。 §14.1.2說:

有一個 模板參數類和類型名之間沒有語義差別 。


如果兩者相同,那麼爲什麼我們有他們兩個,如果一個就夠了?

斯坦李普曼解釋了這個在他的文章:

Why C++ Supports both Class and Typename for Type Parameters?

+0

更多信息可以在[在這篇博客中找到](http:// blogs。 msdn.com/b/slippman/archive/2004/08/11/212768.aspx)。 – orlp 2011-04-25 09:54:05

+0

此鏈接可能很有用http://pages.cs.wisc.edu/~driscoll/typename.html – 2011-04-25 09:57:45