为什么C++17在模板中有两个关键字(class和typename)用于相同的目的
Why C++17 have two keywords(class and typename) for the same purpose in templates
模板模板参数声明只能使用关键字类并且直到C++17才使用typename。
这就是C++17之前的差异。从C++17开始,两者都是一样的。
那么,为什么C++17不弃用模板参数和类型参数声明中的一个关键字(类(呢?
因为类有两个不同的含义
这是一个主观问题。就我个人而言,我倾向于同意class
在这里是一种糟糕的形式,typename
应该是唯一允许的关键字。
但这只是我的看法。也许class
的这种用法将来会被弃用;也许有足够多的人出于任何原因喜欢写class
,但事实并非如此。
归根结底,这并不是影响C++的最紧迫问题,这可能是委员会最终放松限制而不是增加新限制的真正原因。
如果您强烈认为class
的这种用法应该被弃用,请随时向工作组提出建议!
顺便说一句,您提到的static
的用法在C++11中实际上是不预先考虑的。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- "Undefined class"作为is_base_of的论据
- 如何将class.cpp和class.hpp编译为一个.o文件
- 为什么返回类型中需要typename?C++
- '{'标记之前的预期类名,然后在预声明时无效使用不完整的类型'class class_name'
- 如何使用"derived input class"创建派生类?
- 错误:"Left of getValue must have class/struct/union"
- C++ assigment std::list:<typename>:itrator 在 main 中工作,但在方法中它不起作用
- 使用 'typename' 关键字将非类型视为依赖上下文中的类型
- ' class a : b ' 和 ' class a : public b ' 之间的继承类不同
- Pybind11 Class Definition
- 在C++中使用没有合作伙伴Class/Cpp文件的头文件是否实用
- C2011 'CMemDC':Visual Studio 2019中的'class'类型重新定义
- TypeError: [c++ addon class] 不是构造函数
- C++模板的Class和Typename之间的差异
- 为什么C++17在模板中有两个关键字(class和typename)用于相同的目的
- 匿名模板typename/class声明
- c++中的模板,typename和class