[Lldb-commits] [clang] [lldb] [Clang] Initial support for P2841 (Variable template and concept template parameters) (PR #150823)

Timm Baeder via lldb-commits lldb-commits at lists.llvm.org
Tue Jul 29 07:07:48 PDT 2025


================
@@ -2343,22 +2342,25 @@ TemplateInstantiator::TransformOpenACCRoutineDeclAttr(
 }
 
 ExprResult TemplateInstantiator::transformNonTypeTemplateParmRef(
-    Decl *AssociatedDecl, const NonTypeTemplateParmDecl *parm,
-    SourceLocation loc, TemplateArgument arg, UnsignedOrNone PackIndex,
-    bool Final) {
+    Decl *AssociatedDecl, const NamedDecl *parm, SourceLocation loc,
+    TemplateArgument arg, UnsignedOrNone PackIndex, bool Final) {
   ExprResult result;
 
   // Determine the substituted parameter type. We can usually infer this from
   // the template argument, but not always.
   auto SubstParamType = [&] {
-    QualType T;
-    if (parm->isExpandedParameterPack())
-      T = parm->getExpansionType(*SemaRef.ArgPackSubstIndex);
-    else
-      T = parm->getType();
-    if (parm->isParameterPack() && isa<PackExpansionType>(T))
-      T = cast<PackExpansionType>(T)->getPattern();
-    return SemaRef.SubstType(T, TemplateArgs, loc, parm->getDeclName());
+    if (auto NTTP = dyn_cast<NonTypeTemplateParmDecl>(parm)) {
----------------
tbaederr wrote:

```suggestion
    if (auto *NTTP = dyn_cast<NonTypeTemplateParmDecl>(parm)) {
```
... right?

https://github.com/llvm/llvm-project/pull/150823


More information about the lldb-commits mailing list