У меня есть следующий код, который выполняет некоторую арифметику итератора:
template<class Iterator>
void Foo(Iterator first, Iterator last) {
typedef typename Iterator::value_type Value;
std::vector<Value> vec;
vec.resize(last - first);
// ...
}
Выражение (last - first)
работает (AFAIK) только для итераторов произвольного доступа (например, из vector
и deque
). Как я могу проверить код, который переданный итератор отвечает этому требованию?