我们可以在没有模板的情况下使用 C++ 关键字"typename"吗?



我在头文件中看到了这段代码。

using pointIndex = typename std::pair<std::vector<double>, size_t>;
  1. 我们可以在没有模板的情况下使用"typename"吗
  2. 这里有必要使用typename吗
  3. "typedef"one_answers"typename"之间有什么区别

typenametypedef是完全不同的东西。

typedef是用于引入类型别名(类型定义inition(的关键字。在最近的标准中,您也可以使用using进行此操作。因此:

typedef int MyThing;
// or
using MyThing = int;

typename是一个关键字,表示"下一件事是类型"。它用于在某些情况下处理模板,包括在模板声明(例如template <typename T> void foo() { /*..*/ }(中,以及在某些情况中帮助解析器。在您给出的示例中,它是有效的,但却是多余的。

这两件事完全不同,因此不能互换。