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