// PR c++/107522 // { dg-do compile { target c++20 } } template struct A { template static void f() requires (N == 42); template struct B { template static void g() requires (T(N) == 42); }; }; template<> template void A::f() requires (N == 42) { } template<> template<> template void A::B::g() requires (int(N) == 42) { } int main() { A::f<42>(); A::f<43>(); // { dg-error "no match" } A::B::g<42>(); A::B::g<43>(); // { dg-error "no match" } }