Proposed resolution:
This wording is relative to N4964.
Modify [range.iota.iterator] as indicated:
[Drafting note: When W only models input_or_output_iterator, it implies that its pre- and post-increment are not equality-preserving, so iterator_concept should be input_iterator_tag.]
-1- iterator::iterator_concept is defined as follows:
(?.?) — If W models input_or_output_iterator, then
(?.?) — if W models random_access_iterator, then iterator_concept is random_access_iterator_tag;
(?.?) — otherwise, if W models bidirectional_iterator, then iterator_concept is bidirectional_iterator_tag;
(?.?) — otherwise, if W models forward_iterator, then iterator_concept is forward_iterator_tag;
(?.?) — otherwise, iterator_concept is input_iterator_tag.
(1.1) — Otherwise, i
If W models advanceable, then iterator_concept is random_access_iterator_tag.(1.2) — Otherwise, if W models decrementable, then iterator_concept is bidirectional_iterator_tag.
(1.3) — Otherwise, if W models incrementable, then iterator_concept is forward_iterator_tag.
(1.4) — Otherwise, iterator_concept is input_iterator_tag.