为什么C++17在模板中有两个关键字(class和typename)用于相同的目的

Why C++17 have two keywords(class and typename) for the same purpose in templates

本文关键字:typename class 用于 C++17 关键字 两个 为什么      更新时间:2023-10-16

模板模板参数声明只能使用关键字类并且直到C++17才使用typename。

这就是C++17之前的差异。从C++17开始,两者都是一样的。

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

因为类有两个不同的含义

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

但这只是我的看法。也许class的这种用法将来会被弃用;也许有足够多的人出于任何原因喜欢写class,但事实并非如此。

归根结底,这并不是影响C++的最紧迫问题,这可能是委员会最终放松限制而不是增加新限制的真正原因。

如果您强烈认为class的这种用法应该被弃用,请随时向工作组提出建议!

顺便说一句,您提到的static的用法在C++11中实际上是不预先考虑的。