模板模板参数声明只能在C 17之前使用关键字class而不能使用typename .
这是直到C 17的那些之间的差异 . 从C 17开始,两者都是相同的 .
那么为什么C 17不赞成模板参数中的一个关键字(class)和类型参数声明?
因为 class 有两个不同的含义
这是一个主观问题 . 就个人而言,我倾向于同意在这里使用 class 是不好的形式,并且 typename 应该是唯一允许的关键字 .
class
typename
但那只是我的个人意见 . 或许 class 的这种用法将来会被弃用;也许有足够的人喜欢以任何理由写作 class ,它不会 .
在一天结束时,这不是影响C的最紧迫问题,这可能是委员会最终放松限制而不是增加新限制的真正原因 .
如果您强烈建议不要使用 class ,请随时向工作组提出建议!
顺便说一句,你提到的 static 的用法在C 11中实际上是不推荐的 .
static
1 回答
这是一个主观问题 . 就个人而言,我倾向于同意在这里使用
class
是不好的形式,并且typename
应该是唯一允许的关键字 .但那只是我的个人意见 . 或许
class
的这种用法将来会被弃用;也许有足够的人喜欢以任何理由写作class
,它不会 .在一天结束时,这不是影响C的最紧迫问题,这可能是委员会最终放松限制而不是增加新限制的真正原因 .
如果您强烈建议不要使用
class
,请随时向工作组提出建议!顺便说一句,你提到的
static
的用法在C 11中实际上是不推荐的 .