У меня есть этот код
#include <vector>
#include <iostream>
int main(int argc, char* argv[])
{
std::vector<int> v1,v2;
std::cout << std::distance(v1.begin(),v2.begin());
return 0;
}
и он имеет ошибку, потому что не имеет смысла сравнивать итераторы двух разных векторов.
Я просмотрел N3376 в 24.4.4. Операции итератора на стр. 815:
template<class InputIterator> typename iterator_traits<InputIterator>::difference_type distance(InputIterator first, InputIterator last);Требуется: Если
InputIteratorсоответствует требованиям итератора произвольного доступа,lastможет достигать отfirstилиfirst, должно быть достижимо отlast; в противном случаеlastдолжно быть доступно изfirst.
Теперь я думаю, что Requires не выполняется.
Что должно произойти в этом случае стандартное состояние?