// PR c++/99874 // { dg-do compile { target c++20 } } template struct A { static inline auto a = [] (U) { return [] (V) requires requires (T t, U u, V v) { t + u + v; } { }; }; template static inline auto b = [] (U) { return [] (V) requires requires (T t, U u, V v, W w) { t + u + v + w; } { }; }; static auto f() { return [] (U) { return [] (V) requires requires (T t, U u, V v) { t + u + v; } { }; }; } template static auto g() { return [] (U) { return [] (V) requires requires (T t, U u, V v, W w) { t + u + v + w; } { }; }; } }; template auto a = [] (U) { return [] (V) requires requires (T t, U u, V v) { t + u + v; } { }; }; template auto b = [] (U) { return [] (V) { return [] { return [] () requires requires (T t, U u, V v) { t + u + v; } { }; }; }; }; int main() { A::a(0)(0); A::a(0)(nullptr); // { dg-error "no match" } A::b(0)(0); A::b(0)(nullptr); // { dg-error "no match" } A::f()(0)(0); A::f()(0)(nullptr); // { dg-error "no match" } A::g()(0)(0); A::g()(0)(nullptr); // { dg-error "no match" } a(0)(0); a(0)(nullptr); // { dg-error "no match" } b(0)(0)(); b(0)(nullptr)()(); // { dg-error "no match" } }