使用-std = c ++ 0x会导致错误:'Iterator'没有命名类型错误

时间:2014-09-07 19:33:47

标签: c++ templates c++11

我正在尝试编译以前正在运行的代码 达到c++11标准。我只是把

这样做了
-std=c++0x 
<{1>}文件中的

现在,编译器抱怨, 给我这个错误:

Makevars

这是违规行:

29:43: error: ‘Iterator’ does not name a type
29:58: error: ‘Iterator’ has not been declared
29:75: error: ‘Iterator’ does not name a type

我应该在代码中添加什么来解决这个问题?

编辑:

该函数的原始声明是

extern inline bool nextone(const Iterator first,Iterator k,const Iterator last);

1 个答案:

答案 0 :(得分:1)

如果您知道nextone将在其他地方实例化,请使用extern template强制编译器不实例化它,从而减少编译时间和目标代码大小。

extern template <typename Iterator> 
inline bool nextone(const Iterator first,Iterator k,const Iterator last);