https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104594
--- Comment #2 from Patrick Palka <ppalka at gcc dot gnu.org> --- Here's a testcase which illustrates that the fix must happen during normalization, not during satisfaction, since after normalization we don't know which concepts we looked through to yield the given atom: template<class T, T X> concept C = (X != 0); template<class T, T X> concept D = C<int, X>; template<auto X> concept E = D<unsigned, X>; static_assert(E<-1>); // should fail due to implicit conversion from '-1' to unsigned