================
@@ -935,6 +935,11 @@ class PackDeductionScope {
S.collectUnexpandedParameterPacks(Pattern, Unexpanded);
for (unsigned I = 0, N = Unexpanded.size(); I != N; ++I) {
unsigned Depth, Index;
+
+ // Function parameter packs cannot be deduced.
+ if (isa_and_nonnull<ParmVarDecl>(
+ dyn_cast<NamedDecl *>(Unexpanded[I].first)))
+ continue;
----------------
zwuis wrote:
Sorry that my previous explanation is incomplete. Here is an example where
`Unexpanded[i].first` can be anything other than `NamedDecl *` of the
`PointerUnion`.
```cpp
template <typename...> struct S1 {};
template <typename... Ts>
struct S2 {
template <typename... Us>
auto f(S1<__builtin_dedup_pack<Ts...>...>,
S1<__builtin_dedup_pack<Us...>...>) -> S1<Us...>;
};
void g(S2<int> s) { s.f<int>(); }
```
https://github.com/llvm/llvm-project/pull/215235
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits