[iterator.operations] clarify preconditions on std::distance #5244
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The prior wording implied that the two sides of the "or" were independent, so as long as
last
was reachable fromfirst
,first
didn't need to be reachable fromlast
even if passing aRandomAccessIterator
. It seems clear that it is really trying to express two different possible preconditions depending on whether aRandomAccessIterator
is passed or not. I used the same phrasing as in the "Effects:" clause to separate the cases.Alternatively, this precondition seems redundant with http://eel.is/c++draft/iterators#iterator.requirements.general-12, so maybe it should just be removed? This seems to be the only function in [iterators], [ranges], and [algorithms] that has an explicit precondition that iterators passed to it are reachable.