使用C ++ 11(gcc 4.9)编译以下代码时,出现编译错误:
//converts tuple vector to single component vector
template<class In, class Out, int Idx>
QVector<Out> tuple_vector_to_member_vector (const QVector<In>& in_vector)
{
QVector<Out> out_vector;
for (In in : in_vector)
out_vector.push_back(in.get<Idx>());
return out_vector;
}
错误如下(并且在未实例化模板时也会发生):
error: expected primary-expression before ')' token
out_vector.push_back(in.get<Idx>());
(另一方面,Visual C ++ 2013接受它。)
我想那个人必须放置
typename In::get<Idx>
或类似的任何形式,但我不知道在哪里。
有人有想法吗?
谢谢。