以下两种方式在c ++中编写模板有什么区别
template<typename T>
&amp; template<class T>
我们何时更喜欢彼此? 如果两者都相同,那么为什么如果一个就够了我们两个都有?
答案 0 :(得分:9)
完全没有区别。我更喜欢第一个(大多数),但那是我的个人品味。这种语言在它们之间没有任何区别。
对于模板参数,关键字typename
和class
是等效的。 §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