在 C++ 中定义函数模板或类模板时,可以这样写:
template <class T> ...
或者可以这样写:
template <typename T> ...
有充分的理由偏爱其中一个吗?
我接受了最受欢迎(和有趣)的答案,但真正的答案似乎是“不,没有充分的理由偏爱其中一个。”
- 它们是等价的(除非如下所述)。
- 有些人有理由总是使用
typename
. - 有些人有理由总是使用
class
. - 有些人有理由同时使用两者。
- 有些人不在乎他们使用哪一个。
但是请注意,在 C++17 之前,对于模板模板参数,需要使用 ofclass
代替typename
。请参阅下面的 user1428839 的答案。(但这种特殊情况不是偏好问题,而是语言的要求。)