================
@@ -61,27 +68,34 @@ TemplateParameterList::TemplateParameterList(const 
ASTContext& C,
 
     bool IsPack = P->isTemplateParameterPack();
     if (const auto *NTTP = dyn_cast<NonTypeTemplateParmDecl>(P)) {
-      if (!IsPack && NTTP->getType()->containsUnexpandedParameterPack())
-        ContainsUnexpandedParameterPack = true;
+      if (!IsPack) {
+        if (NTTP->getType()->containsUnexpandedParameterPack())
+          ContainsUnexpandedParameterPack = true;
+        else if (DefaultArgumentContainsUnexpandedPack(*NTTP))
+          ContainsUnexpandedParameterPack = true;
+      }
----------------
ilya-biryukov wrote:

Great point, sorry for missing this, I haven't given it another thought after 
adding the lambda.
Less nesting is a good win, PTAL.

I've been also thinking about changing
```cpp
    } else if (const auto *TTP = dyn_cast<TemplateTemplateParmDecl>(P)) {
      if (!IsPack &&
          (TTP->getTemplateParameters()->containsUnexpandedParameterPack() ||
           DefaultArgumentContainsUnexpandedPack(*TTP))) {
```
to 
```cpp
    } else if (const auto *TTP = dyn_cast<TemplateTemplateParmDecl>(P); TTP && 
!IsPack &&
          (TTP->getTemplateParameters()->containsUnexpandedParameterPack() ||
           DefaultArgumentContainsUnexpandedPack(*TTP))) {
```

but ultimately decided against that to keep the nesting consistent across all 
three branches.

https://github.com/llvm/llvm-project/pull/99880
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to