为什么 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 中未被弃用。