Index: clang/lib/Parse/ParseExprCXX.cpp =================================================================== --- clang/lib/Parse/ParseExprCXX.cpp +++ clang/lib/Parse/ParseExprCXX.cpp @@ -1477,6 +1477,9 @@ T.consumeClose(); + MultiParseScope ScopeForGenericLambda(*this); + if (Actions.getCurGenericLambda()) + ScopeForGenericLambda.Enter(Scope::TemplateParamScope); // Parse lambda-specifiers. ParseLambdaSpecifiers(LParenLoc, /*DeclEndLoc=*/T.getCloseLocation(), ParamInfo, EllipsisLoc); Index: clang/test/SemaCXX/lambda-unevaluated.cpp =================================================================== --- clang/test/SemaCXX/lambda-unevaluated.cpp +++ clang/test/SemaCXX/lambda-unevaluated.cpp @@ -122,6 +122,22 @@ static_assert(!__is_same(decltype(foo), void)); } // namespace GH51641 +namespace GH57155 { +auto foo(int t) { + int(*f)(int) = [](auto t) -> decltype([=] { return t; } ()) { return t; }; + return f; +} +} // namespace GH57155 + +namespace GH57170 { +int(*f)(int) = [](auto t) -> decltype([] { + return 0; + } () +){ + return t; +}; +} // namespace GH57170 + namespace StaticLambdas { template struct Nothing {}; Nothing<[]() static { return 0; }()> nothing;