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)