================ @@ -507,10 +507,62 @@ static TemplateDeductionResult DeduceNonTypeTemplateArgument( S, TemplateParams, NTTP, DeducedTemplateArgument(New), T, Info, Deduced); } +static NamedDecl *DeduceTemplateArguments(Sema &S, NamedDecl *A, + TemplateArgument Default) { + switch (A->getKind()) { + case Decl::TemplateTypeParm: { + auto *T = cast<TemplateTypeParmDecl>(A); + // FIXME: DefaultArgument can't represent a pack. + if (T->isParameterPack()) ---------------- cor3ntin wrote:
My question was more whether we want to deduce packs at all. I think the new behavior make sense, in that it is consistent with https://eel.is/c++draft/temp.deduct#partial-11 ( I suspect because both candidates are valid, this tie breaker gets triggered) We might change that in the future, but now packs can't be defaulted, so I struggle to come up to think of a case where considering the pack would change the order of partial ordering (and not trailing packs can't be deduced) here are more tests which I think are consistent https://godbolt.org/z/5Ke3TGfK6 https://github.com/llvm/llvm-project/pull/89807 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits