“typename”关键字的语法
当引用作为从属名称的嵌套名称时,在 C 中使用“typename”关键字,这意味着它嵌套在具有未知参数的模板实例中。此关键字显式指定名称表示类型,特别是当推断的实体(值、类型或模板)不明确时。
嵌套名称中“typename”的使用
考虑以下代码片段:
template<class K> class C { struct P {}; vector<P> vec; void f(); }; template<class K> void C<K>::f() { typename vector<P>::iterator p = vec.begin(); }
这里,“typename”关键字是必要的将 p 声明为类型,即 P 结构向量的迭代器。如果没有“typename”,编译器会将序列向量
::iterator 解释为表示值或函数的表达式,这是不正确的。
需要“typename”的其他情况
除了嵌套名称之外,下面还需要“typename”关键字场景:
以上是何时以及为什么在 C 模板中需要'typename”关键字?的详细内容。更多信息请关注PHP中文网其他相关文章!