首页 > 后端开发 > C++ > 何时以及为什么在 C 模板中需要'typename”关键字?

何时以及为什么在 C 模板中需要'typename”关键字?

Susan Sarandon
发布: 2024-12-19 03:46:11
原创
260 人浏览过

When and Why Do You Need the

“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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板