https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95322
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- There's an implicit conversion from sentinel<false> to sentinel<true>, but that would only happen if the operator== had been found, and since it's a hidden friend it can't be found unless one of the operands is already sentinel<true>.