关于c ++:为什么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之间的区别,因为C++ 17,两者是相同的。

那么为什么C++ 17不舍弃模板参数和类型参数声明中的关键字(类)中的一个呢?

因为阶级有两个不同的含义


这是一个主观问题。就我个人而言,我倾向于同意在这里使用class是一种糟糕的形式,而typename应该是唯一允许使用的关键字。

但这只是我的意见。也许这种使用class的做法在将来会被否决;也许有足够多的人愿意写class,不管出于什么原因,这是不可能的。

在一天结束的时候,这不是影响C++的最紧迫的问题,这可能是委员会最终放宽限制而不是增加新的限制的真正原因。

如果您强烈认为应该反对使用class,请向工作组提出建议!

顺便说一下,在C++ 11中实际上不使用EDCOX1 5的引用。