// Verify we don't crash when matching constraints containing a // TEMPLATE_ID_EXPR that names a template from the current instantiation. // { dg-do compile { target c++20 } } template static constexpr bool False = false; template struct A { template static constexpr bool C = sizeof(T) > N; friend constexpr void f(A) requires C<1> { } friend constexpr void f(A) requires C<1> && False { } }; template struct A { template static constexpr bool D = sizeof(T) > N; friend constexpr void g(A) requires D<1> { } friend constexpr void g(A) requires D<1> && False { } }; int main() { f(A{}); g(A{}); }