c++中的模板,typename和class

Templates in c++,typename and class

本文关键字:typename class c++      更新时间:2023-10-16

用c++用下面两种方式写模板有什么区别

template<typename T> &template<class T>

我们什么时候更喜欢它们?如果两者都是一样的,那么如果一个就足够了,我们为什么要同时拥有它们呢?

完全没有区别。我更喜欢第一个,但这是我个人的品味。他们之间的语言没有任何区别。

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

没有语义差异类和typename之间模板参数。


如果两者相同,那么如果一个就足够了,为什么我们要同时拥有它们呢?

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

为什么c++同时支持Class和Typename作为类型参数?

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