diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 51f58e35a1ef4..bd37025911486 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -5417,6 +5417,7 @@ QualType TreeTransform::TransformTypeInObjectScope( case TypeLoc::Typedef: case TypeLoc::TemplateSpecialization: case TypeLoc::SubstTemplateTypeParm: + case TypeLoc::SubstTemplateTypeParmPack: case TypeLoc::PackIndexing: case TypeLoc::Enum: case TypeLoc::Record: diff --git a/clang/test/SemaTemplate/nested-name-spec-template.cpp b/clang/test/SemaTemplate/nested-name-spec-template.cpp index e6cbe3812da52..c99e1eed456cc 100644 --- a/clang/test/SemaTemplate/nested-name-spec-template.cpp +++ b/clang/test/SemaTemplate/nested-name-spec-template.cpp @@ -167,3 +167,18 @@ namespace unresolved_using { }; template struct C; } // namespace unresolved_using + +#if __cplusplus >= 201703L +namespace SubstTemplateTypeParmPackType { + template struct A {}; + + template void f() { + [](A) { (Ts::g(Is) && ...); }(A<0>{}); + // expected-warning@-1 {{explicit template parameter list for lambdas is a C++20 extension}} + }; + + struct B { static void g(int); }; + + template void f(); +} // namespace SubstTemplateTypeParmPackType +#endif