我有以下代码,它执行一些迭代器算术:
template<class Iterator>
void Foo(Iterator first, Iterator last) {
typedef typename Iterator::value_type Value;
std::vector<Value> vec;
vec.resize(last - first);
// ...
}
Run Code Online (Sandbox Code Playgroud)
该(last - first)表达的作品(据我所知)仅适用于随机访问迭代器(像的那些vector和deque).如何检查传递的迭代器满足此要求的代码?