@@ -5179,7 +5179,7 @@ bool Sema::CheckTemplateArgument(
5179
5179
unsigned ArgumentPackIndex,
5180
5180
SmallVectorImpl<TemplateArgument> &SugaredConverted,
5181
5181
SmallVectorImpl<TemplateArgument> &CanonicalConverted,
5182
- CheckTemplateArgumentKind CTAK, bool *MatchedPackOnParmToNonPackOnArg ) {
5182
+ CheckTemplateArgumentKind CTAK) {
5183
5183
// Check template type parameters.
5184
5184
if (TemplateTypeParmDecl *TTP = dyn_cast<TemplateTypeParmDecl>(Param))
5185
5185
return CheckTemplateTypeArgument(TTP, Arg, SugaredConverted,
@@ -5395,8 +5395,7 @@ bool Sema::CheckTemplateArgument(
5395
5395
case TemplateArgument::Template:
5396
5396
case TemplateArgument::TemplateExpansion:
5397
5397
if (CheckTemplateTemplateArgument(TempParm, Params, Arg,
5398
- /*IsDeduced=*/CTAK != CTAK_Specified,
5399
- MatchedPackOnParmToNonPackOnArg))
5398
+ /*IsDeduced=*/CTAK != CTAK_Specified))
5400
5399
return true;
5401
5400
5402
5401
SugaredConverted.push_back(Arg.getArgument());
@@ -5470,7 +5469,7 @@ bool Sema::CheckTemplateArgumentList(
5470
5469
SmallVectorImpl<TemplateArgument> &SugaredConverted,
5471
5470
SmallVectorImpl<TemplateArgument> &CanonicalConverted,
5472
5471
bool UpdateArgsWithConversions, bool *ConstraintsNotSatisfied,
5473
- bool PartialOrderingTTP, bool *MatchedPackOnParmToNonPackOnArg ) {
5472
+ bool PartialOrderingTTP) {
5474
5473
5475
5474
if (ConstraintsNotSatisfied)
5476
5475
*ConstraintsNotSatisfied = false;
@@ -5546,10 +5545,10 @@ bool Sema::CheckTemplateArgumentList(
5546
5545
5547
5546
if (ArgIdx < NumArgs) {
5548
5547
// Check the template argument we were given.
5549
- if (CheckTemplateArgument(
5550
- *Param, NewArgs[ArgIdx], Template, TemplateLoc, RAngleLoc,
5551
- SugaredArgumentPack.size(), SugaredConverted, CanonicalConverted,
5552
- CTAK_Specified, MatchedPackOnParmToNonPackOnArg ))
5548
+ if (CheckTemplateArgument(*Param, NewArgs[ArgIdx], Template, TemplateLoc,
5549
+ RAngleLoc, SugaredArgumentPack.size() ,
5550
+ SugaredConverted, CanonicalConverted,
5551
+ CTAK_Specified ))
5553
5552
return true;
5554
5553
5555
5554
CanonicalConverted.back().setIsDefaulted(
@@ -5707,8 +5706,7 @@ bool Sema::CheckTemplateArgumentList(
5707
5706
// Check the default template argument.
5708
5707
if (CheckTemplateArgument(*Param, Arg, Template, TemplateLoc, RAngleLoc, 0,
5709
5708
SugaredConverted, CanonicalConverted,
5710
- CTAK_Specified,
5711
- /*MatchedPackOnParmToNonPackOnArg=*/nullptr))
5709
+ CTAK_Specified))
5712
5710
return true;
5713
5711
5714
5712
SugaredConverted.back().setIsDefaulted(true);
@@ -7291,10 +7289,10 @@ static void DiagnoseTemplateParameterListArityMismatch(
7291
7289
Sema &S, TemplateParameterList *New, TemplateParameterList *Old,
7292
7290
Sema::TemplateParameterListEqualKind Kind, SourceLocation TemplateArgLoc);
7293
7291
7294
- bool Sema::CheckTemplateTemplateArgument(
7295
- TemplateTemplateParmDecl *Param, TemplateParameterList *Params,
7296
- TemplateArgumentLoc &Arg, bool IsDeduced ,
7297
- bool *MatchedPackOnParmToNonPackOnArg ) {
7292
+ bool Sema::CheckTemplateTemplateArgument(TemplateTemplateParmDecl *Param,
7293
+ TemplateParameterList *Params,
7294
+ TemplateArgumentLoc &Arg,
7295
+ bool IsDeduced ) {
7298
7296
TemplateName Name = Arg.getArgument().getAsTemplateOrTemplatePattern();
7299
7297
auto [Template, DefaultArgs] = Name.getTemplateDeclAndDefaultArgs();
7300
7298
if (!Template) {
@@ -7338,8 +7336,7 @@ bool Sema::CheckTemplateTemplateArgument(
7338
7336
// A template-argument matches a template template-parameter P when P
7339
7337
// is at least as specialized as the template-argument A.
7340
7338
if (!isTemplateTemplateParameterAtLeastAsSpecializedAs(
7341
- Params, Param, Template, DefaultArgs, Arg.getLocation(), IsDeduced,
7342
- MatchedPackOnParmToNonPackOnArg))
7339
+ Params, Param, Template, DefaultArgs, Arg.getLocation(), IsDeduced))
7343
7340
return true;
7344
7341
// P2113
7345
7342
// C++20[temp.func.order]p2
@@ -9757,14 +9754,11 @@ DeclResult Sema::ActOnExplicitInstantiation(
9757
9754
9758
9755
// Check that the template argument list is well-formed for this
9759
9756
// template.
9760
- bool PrimaryHasMatchedPackOnParmToNonPackOnArg = false;
9761
9757
SmallVector<TemplateArgument, 4> SugaredConverted, CanonicalConverted;
9762
- if (CheckTemplateArgumentList(
9763
- ClassTemplate, TemplateNameLoc, TemplateArgs,
9764
- /*DefaultArgs=*/{}, false, SugaredConverted, CanonicalConverted,
9765
- /*UpdateArgsWithConversions=*/true,
9766
- /*ConstraintsNotSatisfied=*/nullptr, /*PartialOrderingTTP=*/false,
9767
- &PrimaryHasMatchedPackOnParmToNonPackOnArg))
9758
+ if (CheckTemplateArgumentList(ClassTemplate, TemplateNameLoc, TemplateArgs,
9759
+ /*DefaultArgs=*/{}, false, SugaredConverted,
9760
+ CanonicalConverted,
9761
+ /*UpdateArgsWithConversions=*/true))
9768
9762
return true;
9769
9763
9770
9764
// Find the class template specialization declaration that
@@ -9885,9 +9879,7 @@ DeclResult Sema::ActOnExplicitInstantiation(
9885
9879
= cast_or_null<ClassTemplateSpecializationDecl>(
9886
9880
Specialization->getDefinition());
9887
9881
if (!Def)
9888
- InstantiateClassTemplateSpecialization(
9889
- TemplateNameLoc, Specialization, TSK,
9890
- /*Complain=*/true, PrimaryHasMatchedPackOnParmToNonPackOnArg);
9882
+ InstantiateClassTemplateSpecialization(TemplateNameLoc, Specialization, TSK);
9891
9883
else if (TSK == TSK_ExplicitInstantiationDefinition) {
9892
9884
MarkVTableUsed(TemplateNameLoc, Specialization, true);
9893
9885
Specialization->setPointOfInstantiation(Def->getPointOfInstantiation());
0 commit comments