【发布时间】:2010-09-17 19:22:05
【问题描述】:
可能重复:
C++ difference of keywords ‘typename’ and ‘class’ in templates
在 C++ 中定义函数模板或类模板时,可以这样写:
template <class T> ...
或者可以这样写:
template <typename T> ...
是否有充分的理由偏爱其中一个?
我接受了最受欢迎(和有趣)的答案,但真正的答案似乎是“不,没有充分的理由偏爱其中一个。”
- 它们是等价的(除了下面提到的)。
- 有些人总是有理由使用
typename。 - 有些人有理由总是使用
class。 - 有些人有理由同时使用这两种方法。
- 有些人不在乎他们使用哪一种。
但是请注意,在 C++17 之前,对于 模板模板 参数,需要使用 class 而不是 typename。请参阅下面的user1428839's answer。 (但这种特殊情况不是偏好问题,而是语言的要求。)
【问题讨论】:
-
我认为在这种情况下,将所有答案放在一起并接受您自己的新答案而不是将答案放在问题文本中可能是合理的。
-
这不是真正的重复。一个人问哪个是更可取的。另一个要求差异。
-
我不明白这怎么可能与一年多后提出的问题重复。
-
保持一致就是我想说的。我是一个打字男孩,但这取决于你。
-
这个“可能的重复”是在 2008 年提出的。“原版”是在 2010 年提出的。他们在 2012 年注意到了质量。