https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119415

--- Comment #11 from 康桓瑋 <hewillk at gmail dot com> ---
> Use __cpp17_input_iterator can still produce hard errors in some edge cases.

With "hard errors", I mean the following:

struct I {
  using difference_type = int;
  using value_type = int;
  int operator*() const;
  I& operator++();
  I operator++(int);
  bool operator==(const I&) const;
};

template<>
struct std::iterator_traits<I> {
  using difference_type = I::difference_type;
  using value_type = I::value_type;
  using iterator_concept = std::input_iterator_tag;
  // no iterator_category
};

std::ranges::subrange s{I{}, I{}};

Even though such a range seems completely contrived.

Reply via email to