b**a 发帖数: 1375 | 1 下面这个function在visual studio 2010下没问题
template
typename T::value_type reduce(const T& t, Fn f)
{
T::value_type result = *t.begin();
T::const_iterator it=t.begin();
for (++it; it!=t.end(); ++it)
result = f(result, *it);
return result;
}
调用的话比如:
vectorv;
v.push_back(1); v.push_back(2); v.push_back(3);
cout << reduce(v, plus())<
但是在linux的gcc(4.1 -> 4.6)下出现好几个类似
error: need ‘typename’ before ‘T:: value_type’ because ‘T’ is a
dependent scope
的错误.reduce后面跟 >编译错误一样.
请问这个应该怎么改啊? | t****t 发帖数: 6806 | 2 这不是说得很明白嘛, 你得写
typename T::value_type
typename T::const_iterator
就跟你第二行写的一样
【在 b**a 的大作中提到】 : 下面这个function在visual studio 2010下没问题 : template : typename T::value_type reduce(const T& t, Fn f) : { : T::value_type result = *t.begin(); : T::const_iterator it=t.begin(); : for (++it; it!=t.end(); ++it) : result = f(result, *it); : return result; : }
|
|