Index: cfe/trunk/lib/Sema/TreeTransform.h =================================================================== --- cfe/trunk/lib/Sema/TreeTransform.h +++ cfe/trunk/lib/Sema/TreeTransform.h @@ -9399,7 +9399,8 @@ } // Capture the transformed variable. - getSema().tryCaptureVariable(CapturedVar, C->getLocation(), Kind); + getSema().tryCaptureVariable(CapturedVar, C->getLocation(), Kind, + EllipsisLoc); } if (!FinishedExplicitCaptures) getSema().finishLambdaExplicitCaptures(LSI); Index: cfe/trunk/test/SemaCXX/cxx1y-generic-lambdas.cpp =================================================================== --- cfe/trunk/test/SemaCXX/cxx1y-generic-lambdas.cpp +++ cfe/trunk/test/SemaCXX/cxx1y-generic-lambdas.cpp @@ -933,3 +933,18 @@ }; }(0)(0); } + +namespace PR23716 { +template +auto f(T x) { + auto g = [](auto&&... args) { + auto h = [args...]() -> int { + return 0; + }; + return h; + }; + return g; +} + +auto x = f(0)(); +}