Lines Matching refs:TemplateArgument
145 ArrayRef<TemplateArgument> Ps,
146 ArrayRef<TemplateArgument> As,
153 const TemplateArgument &TemplateArg,
240 case TemplateArgument::Null: in checkDeducedTemplateArguments()
243 case TemplateArgument::Type: { in checkDeducedTemplateArguments()
246 if (Y.getKind() == TemplateArgument::Type && Context.hasSameType(TX, TY)) in checkDeducedTemplateArguments()
260 case TemplateArgument::Integral: in checkDeducedTemplateArguments()
264 if (Y.getKind() == TemplateArgument::Expression || in checkDeducedTemplateArguments()
265 Y.getKind() == TemplateArgument::Declaration || in checkDeducedTemplateArguments()
266 (Y.getKind() == TemplateArgument::Integral && in checkDeducedTemplateArguments()
273 case TemplateArgument::StructuralValue: in checkDeducedTemplateArguments()
275 if (Y.getKind() == TemplateArgument::Expression || in checkDeducedTemplateArguments()
276 (Y.getKind() == TemplateArgument::StructuralValue && in checkDeducedTemplateArguments()
283 case TemplateArgument::Template: in checkDeducedTemplateArguments()
284 if (Y.getKind() == TemplateArgument::Template && in checkDeducedTemplateArguments()
291 case TemplateArgument::TemplateExpansion: in checkDeducedTemplateArguments()
292 if (Y.getKind() == TemplateArgument::TemplateExpansion && in checkDeducedTemplateArguments()
300 case TemplateArgument::Expression: { in checkDeducedTemplateArguments()
301 if (Y.getKind() != TemplateArgument::Expression) in checkDeducedTemplateArguments()
315 case TemplateArgument::Declaration: in checkDeducedTemplateArguments()
320 if (Y.getKind() == TemplateArgument::Expression) in checkDeducedTemplateArguments()
326 if (Y.getKind() == TemplateArgument::Integral) { in checkDeducedTemplateArguments()
328 return TemplateArgument(Context, Y.getAsIntegral(), in checkDeducedTemplateArguments()
335 if (Y.getKind() == TemplateArgument::Declaration && in checkDeducedTemplateArguments()
342 case TemplateArgument::NullPtr: in checkDeducedTemplateArguments()
345 if (Y.getKind() == TemplateArgument::Expression) in checkDeducedTemplateArguments()
346 return TemplateArgument(Context.getCommonSugaredType( in checkDeducedTemplateArguments()
352 if (Y.getKind() == TemplateArgument::Integral) in checkDeducedTemplateArguments()
356 if (Y.getKind() == TemplateArgument::NullPtr) in checkDeducedTemplateArguments()
357 return TemplateArgument( in checkDeducedTemplateArguments()
364 case TemplateArgument::Pack: { in checkDeducedTemplateArguments()
365 if (Y.getKind() != TemplateArgument::Pack || in checkDeducedTemplateArguments()
369 llvm::SmallVector<TemplateArgument, 8> NewPack; in checkDeducedTemplateArguments()
370 for (TemplateArgument::pack_iterator in checkDeducedTemplateArguments()
375 TemplateArgument Merged = checkDeducedTemplateArguments( in checkDeducedTemplateArguments()
387 TemplateArgument::CreatePackCopy(Context, NewPack), in checkDeducedTemplateArguments()
507 TemplateArgument New(D, T); in DeduceNonTypeTemplateArgument()
518 TemplateArgument Default) { in getTemplateParameterWithDefault()
571 ArrayRef<TemplateArgument> DefaultArguments, in DeduceTemplateArguments()
637 Info.FirstArg = TemplateArgument(Param); in DeduceTemplateArguments()
638 Info.SecondArg = TemplateArgument(Arg); in DeduceTemplateArguments()
691 ArrayRef<TemplateArgument> PResolved = in DeduceTemplateSpecArguments()
717 ArrayRef<TemplateArgument> AResolved = in DeduceTemplateSpecArguments()
743 Info.FirstArg = TemplateArgument(P); in DeduceTemplateSpecArguments()
744 Info.SecondArg = TemplateArgument(A); in DeduceTemplateSpecArguments()
839 TemplateDeductionInfo &Info, TemplateArgument Pattern, in PackDeductionScope()
863 Deduced[Index] = TemplateArgument(); in addPack()
875 unsigned addPacks(TemplateArgument Pattern) { in addPacks()
879 llvm::SmallVector<TemplateArgument, 4> ExtraDeductions; in addPacks()
901 auto Collect = [&](TemplateArgument Pattern) { in addPacks()
928 const TemplateArgument *PartialPackArgs = nullptr; in finishConstruction()
1073 NewPack = DeducedTemplateArgument(TemplateArgument::getEmptyPack()); in finish()
1075 TemplateArgument *ArgumentPack = in finish()
1076 new (S.Context) TemplateArgument[Pack.New.size()]; in finish()
1079 TemplateArgument(llvm::ArrayRef(ArgumentPack, Pack.New.size())), in finish()
1108 OldPack.getKind() == TemplateArgument::Pack && in finish()
1109 NewPack.getKind() == TemplateArgument::Pack && in finish()
1576 Info.FirstArg = TemplateArgument(P); in DeduceTemplateArgumentsByTypeMatch()
1577 Info.SecondArg = TemplateArgument(A); in DeduceTemplateArgumentsByTypeMatch()
1650 Info.FirstArg = TemplateArgument(P); in DeduceTemplateArgumentsByTypeMatch()
1651 Info.SecondArg = TemplateArgument(A); in DeduceTemplateArgumentsByTypeMatch()
1684 Info.FirstArg = TemplateArgument(P); in DeduceTemplateArgumentsByTypeMatch()
1685 Info.SecondArg = TemplateArgument(A); in DeduceTemplateArgumentsByTypeMatch()
1714 Info.FirstArg = TemplateArgument(P); in DeduceTemplateArgumentsByTypeMatch()
1715 Info.SecondArg = TemplateArgument(A); in DeduceTemplateArgumentsByTypeMatch()
2416 const TemplateArgument &P, TemplateArgument A, in DeduceTemplateArguments()
2426 case TemplateArgument::Null: in DeduceTemplateArguments()
2429 case TemplateArgument::Type: in DeduceTemplateArguments()
2430 if (A.getKind() == TemplateArgument::Type) in DeduceTemplateArguments()
2437 case TemplateArgument::Template: in DeduceTemplateArguments()
2438 if (A.getKind() == TemplateArgument::Template) in DeduceTemplateArguments()
2446 case TemplateArgument::TemplateExpansion: in DeduceTemplateArguments()
2449 case TemplateArgument::Declaration: in DeduceTemplateArguments()
2450 if (A.getKind() == TemplateArgument::Declaration && in DeduceTemplateArguments()
2458 case TemplateArgument::NullPtr: in DeduceTemplateArguments()
2459 if (A.getKind() == TemplateArgument::NullPtr && in DeduceTemplateArguments()
2467 case TemplateArgument::Integral: in DeduceTemplateArguments()
2468 if (A.getKind() == TemplateArgument::Integral) { in DeduceTemplateArguments()
2476 case TemplateArgument::StructuralValue: in DeduceTemplateArguments()
2477 if (A.getKind() == TemplateArgument::StructuralValue && in DeduceTemplateArguments()
2485 case TemplateArgument::Expression: in DeduceTemplateArguments()
2489 case TemplateArgument::Integral: in DeduceTemplateArguments()
2490 case TemplateArgument::Expression: in DeduceTemplateArguments()
2491 case TemplateArgument::StructuralValue: in DeduceTemplateArguments()
2496 case TemplateArgument::NullPtr: in DeduceTemplateArguments()
2500 case TemplateArgument::Declaration: in DeduceTemplateArguments()
2505 case TemplateArgument::Null: in DeduceTemplateArguments()
2506 case TemplateArgument::Type: in DeduceTemplateArguments()
2507 case TemplateArgument::Template: in DeduceTemplateArguments()
2508 case TemplateArgument::TemplateExpansion: in DeduceTemplateArguments()
2509 case TemplateArgument::Pack: in DeduceTemplateArguments()
2519 case TemplateArgument::Pack: in DeduceTemplateArguments()
2534 static bool hasTemplateArgumentForDeduction(ArrayRef<TemplateArgument> &Args, in hasTemplateArgumentForDeduction()
2539 const TemplateArgument &Arg = Args[ArgIdx]; in hasTemplateArgumentForDeduction()
2540 if (Arg.getKind() != TemplateArgument::Pack) in hasTemplateArgumentForDeduction()
2551 static bool hasPackExpansionBeforeEnd(ArrayRef<TemplateArgument> Args) { in hasPackExpansionBeforeEnd()
2557 if (A.getKind() == TemplateArgument::Pack) in hasPackExpansionBeforeEnd()
2571 ArrayRef<TemplateArgument> Ps, in DeduceTemplateArguments()
2572 ArrayRef<TemplateArgument> As, in DeduceTemplateArguments()
2591 const TemplateArgument &P = Ps[ParamIdx]; in DeduceTemplateArguments()
2608 TemplateArgument Pi = P, Ai = As[ArgIdx]; in DeduceTemplateArguments()
2628 TemplateArgument Pattern = P.getPackExpansionPattern(); in DeduceTemplateArguments()
2639 TemplateArgument Pi = Pattern, Ai = As[ArgIdx]; in DeduceTemplateArguments()
2662 TemplateParameterList *TemplateParams, ArrayRef<TemplateArgument> Ps, in DeduceTemplateArguments()
2663 ArrayRef<TemplateArgument> As, sema::TemplateDeductionInfo &Info, in DeduceTemplateArguments()
2672 TemplateArgument X, in isSameTemplateArg()
2673 const TemplateArgument &Y, in isSameTemplateArg()
2685 case TemplateArgument::Null: in isSameTemplateArg()
2688 case TemplateArgument::Type: in isSameTemplateArg()
2692 case TemplateArgument::Declaration: in isSameTemplateArg()
2695 case TemplateArgument::NullPtr: in isSameTemplateArg()
2698 case TemplateArgument::Template: in isSameTemplateArg()
2699 case TemplateArgument::TemplateExpansion: in isSameTemplateArg()
2705 case TemplateArgument::Integral: in isSameTemplateArg()
2708 case TemplateArgument::StructuralValue: in isSameTemplateArg()
2711 case TemplateArgument::Expression: { in isSameTemplateArg()
2718 case TemplateArgument::Pack: { in isSameTemplateArg()
2737 ArrayRef<TemplateArgument> XP = X.pack_elements(); in isSameTemplateArg()
2738 ArrayRef<TemplateArgument> YP = Y.pack_elements(); in isSameTemplateArg()
2751 Sema::getTrivialTemplateArgumentLoc(const TemplateArgument &Arg, in getTrivialTemplateArgumentLoc()
2755 case TemplateArgument::Null: in getTrivialTemplateArgumentLoc()
2758 case TemplateArgument::Type: in getTrivialTemplateArgumentLoc()
2762 case TemplateArgument::Declaration: { in getTrivialTemplateArgumentLoc()
2768 return TemplateArgumentLoc(TemplateArgument(E), E); in getTrivialTemplateArgumentLoc()
2771 case TemplateArgument::NullPtr: { in getTrivialTemplateArgumentLoc()
2776 return TemplateArgumentLoc(TemplateArgument(NTTPType, /*isNullPtr*/true), in getTrivialTemplateArgumentLoc()
2780 case TemplateArgument::Integral: in getTrivialTemplateArgumentLoc()
2781 case TemplateArgument::StructuralValue: { in getTrivialTemplateArgumentLoc()
2783 return TemplateArgumentLoc(TemplateArgument(E), E); in getTrivialTemplateArgumentLoc()
2786 case TemplateArgument::Template: in getTrivialTemplateArgumentLoc()
2787 case TemplateArgument::TemplateExpansion: { in getTrivialTemplateArgumentLoc()
2796 if (Arg.getKind() == TemplateArgument::Template) in getTrivialTemplateArgumentLoc()
2804 case TemplateArgument::Expression: in getTrivialTemplateArgumentLoc()
2807 case TemplateArgument::Pack: in getTrivialTemplateArgumentLoc()
2826 SmallVectorImpl<TemplateArgument> &SugaredOutput, in ConvertDeducedTemplateArgument()
2827 SmallVectorImpl<TemplateArgument> &CanonicalOutput) { in ConvertDeducedTemplateArgument()
2847 if (Arg.getKind() == TemplateArgument::Pack) { in ConvertDeducedTemplateArgument()
2850 SmallVector<TemplateArgument, 2> SugaredPackedArgsBuilder, in ConvertDeducedTemplateArgument()
2858 assert(InnerArg.getKind() != TemplateArgument::Pack && in ConvertDeducedTemplateArgument()
2905 TemplateArgument::CreatePackCopy(S.Context, SugaredPackedArgsBuilder)); in ConvertDeducedTemplateArgument()
2906 CanonicalOutput.push_back(TemplateArgument::CreatePackCopy( in ConvertDeducedTemplateArgument()
2922 SmallVectorImpl<TemplateArgument> &SugaredBuilder, in ConvertDeducedTemplateArguments()
2923 SmallVectorImpl<TemplateArgument> &CanonicalBuilder, in ConvertDeducedTemplateArguments()
3074 ArrayRef<TemplateArgument> SugaredDeducedArgs, in CheckDeducedArgumentConstraints()
3075 ArrayRef<TemplateArgument> CanonicalDeducedArgs, in CheckDeducedArgumentConstraints()
3080 std::optional<ArrayRef<TemplateArgument>> Innermost; in CheckDeducedArgumentConstraints()
3116 ArrayRef<TemplateArgument> TemplateArgs, in FinishTemplateArgumentDeduction()
3129 SmallVector<TemplateArgument, 4> SugaredBuilder, CanonicalBuilder; in FinishTemplateArgumentDeduction()
3174 SmallVector<TemplateArgument, 4> SugaredConvertedInstArgs, in FinishTemplateArgumentDeduction()
3186 TemplateArgument InstArg = SugaredConvertedInstArgs.data()[I]; in FinishTemplateArgumentDeduction()
3212 ArrayRef<TemplateArgument> TemplateArgs, in FinishTemplateArgumentDeduction()
3225 SmallVector<TemplateArgument, 4> SugaredBuilder, CanonicalBuilder; in FinishTemplateArgumentDeduction()
3237 TemplateArgument InstArg = CanonicalBuilder[I]; in FinishTemplateArgumentDeduction()
3274 SmallVector<TemplateArgument, 4> SugaredBuilder, CanonicalBuilder; in FinishTemplateArgumentDeduction()
3299 ArrayRef<TemplateArgument> TemplateArgs, in DeduceTemplateArguments()
3328 SmallVector<TemplateArgument, 4> DeducedArgs(Deduced.begin(), Deduced.end()); in DeduceTemplateArguments()
3348 ArrayRef<TemplateArgument> TemplateArgs, in DeduceTemplateArguments()
3354 ArrayRef<TemplateArgument> TemplateArgs, in DeduceTemplateArguments()
3388 SmallVector<TemplateArgument> PArgs = {TemplateArgument(PType)}; in DeduceTemplateArgumentsFromType()
3389 SmallVector<TemplateArgument> AArgs = {TemplateArgument(FromType)}; in DeduceTemplateArgumentsFromType()
3396 SmallVector<TemplateArgument, 4> DeducedArgs(Deduced.begin(), Deduced.end()); in DeduceTemplateArgumentsFromType()
3462 SmallVector<TemplateArgument, 4> SugaredBuilder, CanonicalBuilder; in SubstituteExplicitTemplateArguments()
3467 SmallVector<TemplateArgument, 4> DeducedArgs; in SubstituteExplicitTemplateArguments()
3507 const TemplateArgument &Arg = CanonicalBuilder.back(); in SubstituteExplicitTemplateArguments()
3508 if (Arg.getKind() == TemplateArgument::Pack) { in SubstituteExplicitTemplateArguments()
3609 const TemplateArgument &Arg = SugaredExplicitArgumentList->get(I); in SubstituteExplicitTemplateArguments()
3628 Info.FirstArg = TemplateArgument(DeducedA); in CheckOriginalCallArgDeduction()
3629 Info.SecondArg = TemplateArgument(OriginalArg.OriginalArgType); in CheckOriginalCallArgDeduction()
3773 ArrayRef<TemplateArgument> DeducedArgs) { in instantiateExplicitSpecifierDeferred()
3822 SmallVector<TemplateArgument, 4> DeducedArgs(Deduced.begin(), Deduced.end()); in FinishTemplateArgumentDeduction()
3834 SmallVector<TemplateArgument, 4> SugaredBuilder, CanonicalBuilder; in FinishTemplateArgumentDeduction()
4741 Info.FirstArg = TemplateArgument(SpecializationType); in DeduceTemplateArguments()
4742 Info.SecondArg = TemplateArgument(ArgFunctionType); in DeduceTemplateArguments()
4993 TemplateArgumentLoc(TemplateArgument(Deduced), in CheckDeducedPlaceholderConstraints()
4999 llvm::SmallVector<TemplateArgument, 4> SugaredConverted, CanonicalConverted; in CheckDeducedPlaceholderConstraints()
5166 Deduced[0].getKind() != TemplateArgument::Null) in DeduceAutoType()
5188 if (Deduced[0].getKind() != TemplateArgument::Type) in DeduceAutoType()
5658 const TemplateArgument &TA1 = TST1->template_arguments().back(); in getMoreSpecializedTemplate()
5659 if (TA1.getKind() == TemplateArgument::Pack) { in getMoreSpecializedTemplate()
5662 const TemplateArgument &TA2 = TST2->template_arguments().back(); in getMoreSpecializedTemplate()
5663 assert(TA2.getKind() == TemplateArgument::Pack); in getMoreSpecializedTemplate()
5890 SmallVector<TemplateArgument, 4> DeducedArgs(Deduced.begin(), in isAtLeastAsSpecializedAs()
5932 ArrayRef<TemplateArgument> Args1 = PS1->getTemplateArgs().asArray(), in operator ()()
5951 ArrayRef<TemplateArgument> Args1 = Spec->getTemplateArgs().asArray(), in operator ()()
6021 const TemplateArgument &TA1 = TST1->template_arguments().back(); in getMoreSpecialized()
6022 if (TA1.getKind() == TemplateArgument::Pack) { in getMoreSpecialized()
6025 const TemplateArgument &TA2 = TST2->template_arguments().back(); in getMoreSpecialized()
6026 assert(TA2.getKind() == TemplateArgument::Pack); in getMoreSpecialized()
6163 SmallVector<TemplateArgument, 8> AArgs; in isTemplateTemplateParameterAtLeastAsSpecializedAs()
6170 SmallVector<TemplateArgument, 4> PArgs; in isTemplateTemplateParameterAtLeastAsSpecializedAs()
6180 TemplateArgument Arg = PArgs[I]; in isTemplateTemplateParameterAtLeastAsSpecializedAs()
6181 if (Arg.getKind() == TemplateArgument::Pack) { in isTemplateTemplateParameterAtLeastAsSpecializedAs()
6193 SmallVector<TemplateArgument, 4> SugaredPArgs; in isTemplateTemplateParameterAtLeastAsSpecializedAs()
6225 SmallVector<TemplateArgument, 4> DeducedArgs(Deduced.begin(), Deduced.end()); in isTemplateTemplateParameterAtLeastAsSpecializedAs()
6658 const TemplateArgument &TemplateArg, in MarkUsedTemplateParameters()
6663 case TemplateArgument::Null: in MarkUsedTemplateParameters()
6664 case TemplateArgument::Integral: in MarkUsedTemplateParameters()
6665 case TemplateArgument::Declaration: in MarkUsedTemplateParameters()
6666 case TemplateArgument::NullPtr: in MarkUsedTemplateParameters()
6667 case TemplateArgument::StructuralValue: in MarkUsedTemplateParameters()
6670 case TemplateArgument::Type: in MarkUsedTemplateParameters()
6675 case TemplateArgument::Template: in MarkUsedTemplateParameters()
6676 case TemplateArgument::TemplateExpansion: in MarkUsedTemplateParameters()
6682 case TemplateArgument::Expression: in MarkUsedTemplateParameters()
6687 case TemplateArgument::Pack: in MarkUsedTemplateParameters()