我收到以下编译错误:
error: expected `;' before 'it'"
这是我的代码:
#include#include template< class T > void example() { std::list< boost::function
>::iterator it; }
为什么会这样?我该如何解决?
您需要放在typename
该行的前面,因为您执行:: iterator的类型取决于模板参数T.像这样:
template< class T > void example() { typename std::list< boost::function>::iterator it; }
考虑一下这条线
std::list< boost::function>::iterator * it;
这可能意味着乘法或指针.这就是为什么你需要typename
明确你的意图.没有它,编译器假定不是一个类型,因此它需要一个运算符或语法分号.
另请参阅新的C++ FAQ条目将依赖名称上的模板和typename放在何处.