[clang] [Sema] Substitute parameter packs when deduced from function arguments (PR #79371)

via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 26 06:27:11 PST 2024


================
@@ -4371,6 +4394,34 @@ Sema::TemplateDeductionResult Sema::DeduceTemplateArguments(
           // corresponding argument is a list?
           PackScope.nextPackElement();
         }
+      } else if (!IsTrailingPack && !PackScope.isPartiallyExpanded() &&
+                 PackScope.isDeducedFromEarlierParameter()) {
+        // [temp.deduct.general#3]
+        // When all template arguments have been deduced
+        // or obtained from default template arguments, all uses of template
+        // parameters in the template parameter list of the template are
+        // replaced with the corresponding deduced or default argument values
+        //
+        // If we have a trailing parameter pack, that has been deduced
+        // previously we substitute the pack here in a similar fashion as
+        // above with the trailing parameter packs. The main difference here is
+        // that, in this case we are not processing all of the remaining
+        // arguments. We are only process as many arguments as much we have in
----------------
cor3ntin wrote:

```suggestion
        // arguments. We are only process as many arguments as we have in
```

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


More information about the cfe-commits mailing list