2008-11-11 58 views

回答

18

你需要把typename在该行的前面,因为类型你做的:迭代时依赖于模板参数T.像这样:

template< class T > 
void example() { 
    typename std::list< boost::function<T()> >::iterator it; 
} 

考虑行

std::list< boost::function<T()> >::iterator * it; 

这可能意味着乘法或指针。这就是为什么你需要typename来明确你的意图。如果没有它,编译器会假定不是一个类型,因此它需要一个操作符或语法上的分号。


另请参阅新的C++ FAQ条目Where to put template and typename on dependent names

相关问题