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

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
The concept C checks whether S<unreachable_sentinel_t> satisfies the constraint
for the iterator_traits specialization. That performs ADL for operator== with
S<unreachable_sentinel_t> and unreachable_sentinel_t as associated classes.
That finds the hidden friend function, and then performs overload resolution to
see if it's viable for S<unreachable_sentinel_t> arguments. Overload resolution
checks whether the arguments satisfy the constraints, which means checking if C
is satisfied, which creates the cycle.

The question is whether GCC is correct to check constraint satisfaction for one
argument when the other argument cannot be converted to unreachable_sentinel_t.

Reply via email to