void test() { []{}(); []{ foo(); }(); [x]{ foo(x); }(); [](int x){ foo(x); }(42); [y](int x){ foo(x, y); }(42); bar([]{ return 1; }()); bar([]{ return foo(); }()); bar([x]{ return foo(x); }(42)); bar([](int x){ return foo(x); }(42)); bar([y](int x){ return foo(x, y); }(42)); [] {} (); [] { foo(); } (); [x] { foo(x); } (); [] (int x){ foo(x); } (42); [y] (int x){ foo(x, y); } (42); bar([] { return 1; } ()); bar([] { return foo(); } ()); bar([x] { return foo(x); } (42)); bar([] (int x){ return foo(x); } (42)); bar([y] (int x){ return foo(x, y); } (42)); }