[英]can we use the C++ keyword “typename” without templates?
我在 header 文件中看到了这段代码。
using pointIndex = typename std::pair<std::vector<double>, size_t>;
typename
和typedef
是完全不同的东西。
typedef
是用于引入类型别名(类型定义初始化)的关键字。 在最近的标准中,您也可以使用using
。 所以:
typedef int MyThing;
// or
using MyThing = int;
typename
是一个关键字,表示“接下来的事情是类型”。 它用于在某些情况下处理模板,包括模板声明(例如template <typename T> void foo() { /*..*/ }
) 以及在某些情况下帮助解析器。 在您给出的示例中,它是有效的,但是是多余的。
这两件事完全不同,因此不能互换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.