Стандарт говорит: :
Возвращает: Самый дальний итератор i
в диапазоне [first, last]
такой, что для каждого итератора j
в диапазоне [first, i)
выполняются следующие соответствующие условия: *j < value
или comp(*j, value) != false
.
Сейчас:
- Диапазон
[first, last]
для пустого контейнера имеетодин элемент, а именно итератор, возвращаемый его функцией-членом end()
. i
, следовательно, может быть только end()
. - Существует только один допустимый диапазон
[first, i)
, которыйравно [end, end())
. - Этот диапазон пуст, поскольку нет элемента, который на больше или равен , чем
end()
и ниже , чем end()
нав то же время.
Поскольку каждого итератора нет j
, я думаю, что цитируемое предложение можно переписать в:
Возвращает: Самый дальний итератор i
в диапазоне [first, last]
.
. Это означает, что единственное i
, которое может быть возвращено, это end()
.