Created on 2024-07-07.00:00:00 last changed 1 week ago
Proposed resolution:
This wording is relative to N4981.
Modify [range.enumerate.iterator] as indicated:
namespace std::ranges {
  template<view V>
    requires range-with-movable-references<V>
  template<bool Const>
  class enumerate_view<V>::iterator {
    using Base = maybe-const<Const, V>;                         // exposition only
  public:
    using iterator_category = input_iterator_tag;      // present only if Base
                                                       // models forward_range
    using iterator_concept = see below;
    […]
  };
}
Modify [range.cartesian.iterator] as indicated:
namespace std::ranges {
  template<input_range First, forward_range... Vs>
    requires (view<First> && ... && view<Vs>)
  template<bool Const>
  class cartesian_product_view<First, Vs...>::iterator {
  public:
    using iterator_category = input_iterator_tag;      // present only if maybe-const<Const, First>
                                                       // models forward_range
    using iterator_concept  = see below;
    […]
  };
}
[ 2025-10-21; Reflector poll. ]
Set priority to 3 after reflector poll.
Six votes for Tentatively Ready, but not unanimous.
These two iterators do not support *r++ for non-forward iterators, so we should not provide iterator_category as they are not C++17 iterators.
| History | |||
|---|---|---|---|
| Date | User | Action | Args | 
| 2025-10-21 15:17:02 | admin | set | messages: + msg15322 | 
| 2024-07-07 17:22:16 | admin | set | messages: + msg14233 | 
| 2024-07-07 00:00:00 | admin | create | |