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

--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I think the error message is correct.

In the original code we have:
```
...
  template<typename _Iter>
    concept incrementable = regular<_Iter> && requires(_Iter __i) { { __i++ }
-> same_as<_Iter>; };
...

namespace boost { namespace stl_interfaces { inline namespace v2 {
    template<      typename D,      typename IteratorConcept,     typename
DifferenceType>
    struct iterator_interface
    {
      friend constexpr bool operator>=(D lhs, D rhs)
        requires std::equality_comparable<D> {        }
    };
...

template<typename T>
struct iterator : boost::stl_interfaces::iterator_interface<iterator<T>,
std::forward_iterator_tag, T>
{
    bool operator==(iterator) const;
};

```
iterator<T> is not complete until after the instantiation is finished but we
have a std::equality_comparable which does the confusion

Reply via email to