错误1:

template<class T>
void temp(std::vector<T>& container)
{
        std::vector<T>::const_iterator p; //error: expected ‘;’ before ‘p’
        for(p = container.begin(); p != container.end(); ++p)
        {
                //...
        }
}

解决方法:

std::vector<T>::const_iterator p; //error: expected ‘;’ before ‘p’

typename std::vector<T>::const_iterator p;

原因:
 1、首先类除了可以定义数据成员或函数成员之外,还可以定义类型成员。
 2、使用std::vector<T>::const_iterator时,编译器假定这样的名字指定的是数据成员,而不是数据类型成员。
 3、如果希望编译器将const_iterator当做类型,则必须显示告诉编译器这样做,这就是我们加typename的原因。

错误2:typename const报错

template<typename T>
inline static bool Insert(std::list<T> & dest, const T & val)
{
    bool bDuplicate = false;
    typename std::list<T>::iterator iter = dest.begin();
    typename const std::list<T>::iterator end = dest.end();
    for ( ; end != iter; ++iter)
    {
        if(*iter >= val)
        {
            bDuplicate = (*iter == val);
            break;
        }
    }

if(!bDuplicate)
    {
        // 不重复则插入
        dest.insert(iter, val);
        return true;
    }

return false;
}

解决方法:

typename const std::list<T>::iterator end = dest.end();

const typename std::list<T>::iterator end = dest.end();

原因:

应该是typename后面接的下一个单词须是个类型名,而不应是const

更深入理解可以看nested dependent name(嵌套依赖名字)

本人以前的幼稚解决方法:

__gnu_cxx::__normal_iterator<T const*, std::vector<T, std::allocator<T> > > p;

最新文章

  1. python 2.6 与 2.4 区别
  2. 自己写的java excel导出工具类
  3. python基础之模块
  4. Idea 常用快捷键列表
  5. ACM中的浮点数精度处理
  6. Python-json 和 pickle
  7. ruby学习总结02
  8. Supervisor 守护 dotnetcore 程序
  9. Linq 学习(1) 概述
  10. MAC随机修改批处理
  11. Mysql分区表使用的一些限制和需要注意的地方
  12. Codeforces Round #411 (Div. 2)(A,B,C,D 四水题)
  13. 项目详解2—LVS负载均衡详解
  14. Flutter - 本地化启动列表中App名字
  15. Redis集群架构【转载】
  16. Docker常见问题
  17. git/github基本命令
  18. 【探路者】Alpha发布用户使用报告
  19. 关于command &#39;gcc&#39; failed with exit status 1 解决方法
  20. m2014-c-&gt;c模拟java的hashmap容器类

热门文章

  1. java发起HTTP请求的共用类
  2. 用venv 配置不同的开发环境
  3. 如何将水晶报表(Crystal Report)导入葡萄城报表
  4. VS2008 试图运行未注册64位调试器组件
  5. linq not in 查询
  6. SELECT查询结果集INSERT到数据表
  7. Oracle Database 12c Preinstall Steps for Oracle Linux Simplified
  8. centos 7 linux x64
  9. 一起学习Boost标准库--Boost.StringAlgorithms库
  10. maven 错误列表