@@ -2677,19 +2677,18 @@ struct ConvertConstructorToDeductionGuideTransform {
2677
2677
}
2678
2678
};
2679
2679
2680
- // Find all template parameters of the AliasTemplate that appear in the
2681
- // given DeducedArgs .
2682
- SmallVector<unsigned >
2683
- FindAppearedTemplateParamsInAlias ( ArrayRef<TemplateArgument> DeducedArgs ,
2684
- TypeAliasTemplateDecl *AliasTemplate ) {
2680
+ // Find all template parameters that appear in the given DeducedArgs.
2681
+ // Return the indices of the template parameters in the TemplateParams .
2682
+ SmallVector<unsigned > TemplateParamsReferencedInTemplateArgumentList (
2683
+ ArrayRef<NamedDecl *> TemplateParams ,
2684
+ ArrayRef<TemplateArgument> DeducedArgs ) {
2685
2685
struct FindAppearedTemplateParams
2686
2686
: public RecursiveASTVisitor<FindAppearedTemplateParams> {
2687
- llvm::DenseSet<NamedDecl *> TemplateParamsInAlias ;
2687
+ llvm::DenseSet<NamedDecl *> TemplateParams ;
2688
2688
llvm::DenseSet<const NamedDecl *> AppearedTemplateParams;
2689
2689
2690
- FindAppearedTemplateParams (ArrayRef<NamedDecl *> TemplateParamsInAlias)
2691
- : TemplateParamsInAlias(TemplateParamsInAlias.begin(),
2692
- TemplateParamsInAlias.end()) {}
2690
+ FindAppearedTemplateParams (ArrayRef<NamedDecl *> TemplateParams)
2691
+ : TemplateParams(TemplateParams.begin(), TemplateParams.end()) {}
2693
2692
2694
2693
bool VisitTemplateTypeParmType (TemplateTypeParmType *TTP) {
2695
2694
TTP->getIndex ();
@@ -2702,19 +2701,17 @@ FindAppearedTemplateParamsInAlias(ArrayRef<TemplateArgument> DeducedArgs,
2702
2701
}
2703
2702
2704
2703
void MarkAppeared (NamedDecl *ND) {
2705
- if (TemplateParamsInAlias .contains (ND))
2704
+ if (TemplateParams .contains (ND))
2706
2705
AppearedTemplateParams.insert (ND);
2707
2706
}
2708
2707
};
2709
- ArrayRef<NamedDecl *> TemplateParamsInAlias =
2710
- AliasTemplate->getTemplateParameters ()->asArray ();
2711
- FindAppearedTemplateParams MarkAppeared (TemplateParamsInAlias);
2708
+ FindAppearedTemplateParams MarkAppeared (TemplateParams);
2712
2709
MarkAppeared.TraverseTemplateArguments (DeducedArgs);
2713
2710
2714
2711
SmallVector<unsigned > Results;
2715
- for (unsigned Index = 0 ; Index < TemplateParamsInAlias .size (); ++Index) {
2712
+ for (unsigned Index = 0 ; Index < TemplateParams .size (); ++Index) {
2716
2713
if (MarkAppeared.AppearedTemplateParams .contains (
2717
- TemplateParamsInAlias [Index]))
2714
+ TemplateParams [Index]))
2718
2715
Results.push_back (Index);
2719
2716
}
2720
2717
return Results;
@@ -2837,7 +2834,8 @@ void DeclareImplicitDeductionGuidesForTypeAlias(
2837
2834
NonDeducedTemplateParamsInFIndex.push_back (Index);
2838
2835
}
2839
2836
auto DeducedAliasTemplateParams =
2840
- FindAppearedTemplateParamsInAlias (DeducedArgs, AliasTemplate);
2837
+ TemplateParamsReferencedInTemplateArgumentList (
2838
+ AliasTemplate->getTemplateParameters ()->asArray (), DeducedArgs);
2841
2839
// All template arguments null by default.
2842
2840
SmallVector<TemplateArgument> TemplateArgsForBuildingFPrime (
2843
2841
F->getTemplateParameters ()->size ());
@@ -2930,8 +2928,9 @@ void DeclareImplicitDeductionGuidesForTypeAlias(
2930
2928
//
2931
2929
// The template argument list is formed from the `DeducedArgs`, two parts:
2932
2930
// 1) appeared template parameters of alias: transfrom the deduced
2933
- // template argument 2) non-deduced template parameters of f: rebuild a
2934
- // template argument
2931
+ // template argument;
2932
+ // 2) non-deduced template parameters of f: rebuild a
2933
+ // template argument;
2935
2934
//
2936
2935
// 2) has been built already (when rebuilding the new template
2937
2936
// parameters), we now perform 1).
0 commit comments