У меня есть этот код
#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 не выполняется.
Что должно произойти в этом случае стандартное состояние?