zoukankan      html  css  js  c++  java
  • [C++再学习系列] typename和依赖类型

    template<typename(class) T>

    class Widget { ... };

    classtypename 均可用于声明模板的形式类型参数,但 typename 能更清楚地表示: T 可以是任何 类型;不必是一个类。

    为了避免潜在的模糊解析,编译器要求在依赖形式类型参数的类型名字之前使用 typename 。这样的类型被称为依赖类型 示例:

    template<typename C>
    bool lastGreaterThanFirst(const C& container) {
           if (container.empty()) return false;
           typename C::const_iterator begin(container, begin());
           typename C::const_ierator end(container.end());
    
           return *--end > *begin;
    } 
    

    在这个例子里,局部变量 beginend 的类型是 C::const_iteratorconst_iterator 是依赖形式类型参数 C 的一种类型。因为 C::const_iterator 是一种依赖类型,你被要求在它之前放上 typename 这个词。(一些编译器错误地接受没有 typename 的代码,但这样的代码不可移植。)

    ---------------------------------------------------

    兄弟的公司:立即购--手机购物,诚信网购

    兄弟的公司:立即团

    欢迎转载,请注明作者和出处

  • 相关阅读:
    [中英对照]INTEL与AT&T汇编语法对比
    用gdb理解C宏(#和##)
    Unix/Linux文件类型及访问权限
    apt-get
    查看ip地址信息和配置临时ip
    修改文件所有者 chown
    修改文件权限 chmod
    tar命令
    PHP magic_quotes_gpc
    chmod命令详细用法
  • 原文地址:https://www.cnblogs.com/zhenjing/p/typename.html
Copyright © 2011-2022 走看看