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

            Bug ID: 109752
           Summary: [ICE] in check_complete_insertion, at hash-table.h:578
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ldalessandro at gmail dot com
  Target Milestone: ---

The following example is reduced from
https://github.com/boostorg/stl_interfaces/blob/boost-1.82.0/example/node_iterator.cpp.
It causes the ICE on trunk (gcc-14).

  #include <boost/stl_interfaces/iterator_interface.hpp>

  template<typename T>
  struct iterator : boost::stl_interfaces::iterator_interface<iterator<T>, 
  std::forward_iterator_tag, T>
  {
    using base_type = boost::stl_interfaces::iterator_interface<iterator<T>,
std::forward_iterator_tag, T>;
    using base_type::operator++;

    T& operator*() const;
    iterator& operator++();
    bool operator==(iterator) const;
  };

  static_assert(std::incrementable<iterator<int>>);

Live: https://godbolt.org/z/n9hMW4a4b

PR: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108451 fails the same assert
but I don't know if it's the same cause.

PR: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109751 same example may
trigger gcc-13 bug (I'm not sure)

Reply via email to