typename 是 C++ 中的关键字,主要用于模板(template)语境里,表示某个依赖于模板参数的名字是一个类型名(type),从而帮助编译器正确解析代码。(在某些场景下也可用于模板参数声明,如 template<typename T>;它与 class 在此处基本等价。)
/ˈtaɪp.neɪm/
Use typename to declare a template type parameter.
使用 typename 来声明模板的类型参数。
In a dependent context, you must write typename T::value_type so the compiler knows it is a type.
在依赖于模板参数的语境中,你必须写 typename T::value_type,让编译器知道它是一个类型。
typename 由 type(类型) + name(名称) 组合而来,是 C++ 模板机制发展过程中引入的语法,用来消除“某个标识符到底是类型还是成员/变量”的歧义;在模板中遇到依赖名称(dependent name)时尤其重要。