c ++,typename和class中的模板

时间:2011-04-25 09:46:05

标签: c++ templates

以下两种方式在c ++中编写模板有什么区别

template<typename T>&amp; template<class T>

我们何时更喜欢彼此? 如果两者都相同,那么为什么如果一个就够了我们两个都有?

2 个答案:

答案 0 :(得分:9)

完全没有区别。我更喜欢第一个(大多数),但那是我的个人品味。这种语言在它们之间没有任何区别。

对于模板参数,关键字typenameclass是等效的。 §14.1.2说:

  

没有语义差异   在一个类和类型名之间   模板参数。


  

如果两者都相同,那么如果一个人足够的话,为什么我们两个都有?

Stan Lippman在他的文章中解释了这一点:

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

答案 1 :(得分:3)

由于历史原因,这些关键字存在。它们之间没有区别。读这个: http://blogs.msdn.com/b/slippman/archive/2004/08/11/212768.aspx