目前我遇到了一些类似 fooA()
的代码(不要注意函数体),它需要一个特定的容器作为参数,比如说 vector<double>
。
double fooA(std::vector<double> const& list)
{
return list[0];
}
现在,我想要泛化并使用迭代器:
template<typename InputIterator>
double fooB(InputIterator first, InputIterator last)
{
return *first;
}
如何表明fooB()
需要迭代器遍历double
?
有人可能会传递一个vector<string>::iterator
,甚至更糟糕的是,可能会编译通过而没有警告地传递一个vector<int>::iterator
。
double
而不是int
,当然。我已经更正了,谢谢。我的“真实返回类型”不取决于迭代器... - Julian Prclôs