为什么 C++17 在模板中有两个关键字(class 和 typename)用于相同的目的
Why C++17 have two keywords(class and typename) for the same purpose in templates
Template template parameter declaration can only use the keyword class
and not typename until C++17.
这是C++17.Since C++17之前的区别,两者是一样的。
那为什么 C++17 不反对模板参数和类型参数声明中的关键字(class)之一?
因为class有两个不同的意思
这是一个主观问题。就个人而言,我倾向于同意 class
在这里 根本 是糟糕的形式,typename
应该是唯一允许的关键字。
但这只是我的意见。也许 class
的这种用法将来会被弃用;也许有足够多的人出于某种原因喜欢写 class
,但不会。
归根结底,这并不是影响 C++ 的最紧迫问题,这可能是委员会最终放宽限制而不是添加新限制的真正原因。
如果您强烈认为应该弃用 class
的这种用法,请随时向工作组提出建议!
顺便说一下,您提到的 static
的用法实际上在 C++11 中未被弃用。
Template template parameter declaration can only use the keyword class and not typename until C++17.
这是C++17.Since C++17之前的区别,两者是一样的。
那为什么 C++17 不反对模板参数和类型参数声明中的关键字(class)之一?
因为class有两个不同的意思
这是一个主观问题。就个人而言,我倾向于同意 class
在这里 根本 是糟糕的形式,typename
应该是唯一允许的关键字。
但这只是我的意见。也许 class
的这种用法将来会被弃用;也许有足够多的人出于某种原因喜欢写 class
,但不会。
归根结底,这并不是影响 C++ 的最紧迫问题,这可能是委员会最终放宽限制而不是添加新限制的真正原因。
如果您强烈认为应该弃用 class
的这种用法,请随时向工作组提出建议!
顺便说一下,您提到的 static
的用法实际上在 C++11 中未被弃用。