Lines Matching refs:Pack
356 case TemplateArgument::Pack: { in checkDeducedTemplateArguments()
357 if (Y.getKind() != TemplateArgument::Pack || in checkDeducedTemplateArguments()
711 DeducedPack Pack(Index); in addPack() local
712 Pack.Saved = Deduced[Index]; in addPack()
722 Packs.push_back(Pack); in addPack()
809 for (auto &Pack : Packs) { in finishConstruction() local
810 if (Info.PendingDeducedPacks.size() > Pack.Index) in finishConstruction()
811 Pack.Outer = Info.PendingDeducedPacks[Pack.Index]; in finishConstruction()
813 Info.PendingDeducedPacks.resize(Pack.Index + 1); in finishConstruction()
814 Info.PendingDeducedPacks[Pack.Index] = &Pack; in finishConstruction()
817 std::make_pair(Info.getDeducedDepth(), Pack.Index)) { in finishConstruction()
818 Pack.New.append(PartialPackArgs, PartialPackArgs + NumPartialPackArgs); in finishConstruction()
828 Deduced[Pack.Index] = Pack.New[PackElements]; in finishConstruction()
835 for (auto &Pack : Packs) in ~PackDeductionScope() local
836 Info.PendingDeducedPacks[Pack.Index] = Pack.Outer; in ~PackDeductionScope()
860 for (auto &Pack : Packs) { in nextPackElement() local
861 DeducedTemplateArgument &DeducedArg = Deduced[Pack.Index]; in nextPackElement()
862 if (!Pack.New.empty() || !DeducedArg.isNull()) { in nextPackElement()
863 while (Pack.New.size() < PackElements) in nextPackElement()
864 Pack.New.push_back(DeducedTemplateArgument()); in nextPackElement()
865 if (Pack.New.size() == PackElements) in nextPackElement()
866 Pack.New.push_back(DeducedArg); in nextPackElement()
868 Pack.New[PackElements] = DeducedArg; in nextPackElement()
869 DeducedArg = Pack.New.size() > PackElements + 1 in nextPackElement()
870 ? Pack.New[PackElements + 1] in nextPackElement()
883 for (auto &Pack : Packs) { in finish() local
885 Deduced[Pack.Index] = Pack.Saved; in finish()
900 Pack.New.resize(PackElements); in finish()
904 if (Pack.New.empty()) { in finish()
909 new (S.Context) TemplateArgument[Pack.New.size()]; in finish()
910 std::copy(Pack.New.begin(), Pack.New.end(), ArgumentPack); in finish()
912 TemplateArgument(llvm::makeArrayRef(ArgumentPack, Pack.New.size())), in finish()
918 Pack.New[0].wasDeducedFromArrayBound()); in finish()
923 if (Pack.Outer) { in finish()
924 if (Pack.Outer->DeferredDeduction.isNull()) { in finish()
927 Pack.Outer->DeferredDeduction = NewPack; in finish()
930 Loc = &Pack.Outer->DeferredDeduction; in finish()
932 Loc = &Deduced[Pack.Index]; in finish()
941 if (!Result.isNull() && !Pack.DeferredDeduction.isNull()) { in finish()
943 NewPack = Pack.DeferredDeduction; in finish()
947 NamedDecl *Param = TemplateParams->getParam(Pack.Index); in finish()
2415 case TemplateArgument::Pack: in DeduceTemplateArguments()
2436 if (Arg.getKind() != TemplateArgument::Pack) in hasTemplateArgumentForDeduction()
2453 if (A.getKind() == TemplateArgument::Pack) in hasPackExpansionBeforeEnd()
2604 case TemplateArgument::Pack: in isSameTemplateArg()
2689 case TemplateArgument::Pack: in getTrivialTemplateArgumentLoc()
2730 if (Arg.getKind() == TemplateArgument::Pack) { in ConvertDeducedTemplateArgument()
2740 assert(InnerArg.getKind() != TemplateArgument::Pack && in ConvertDeducedTemplateArgument()
3281 if (Arg.getKind() == TemplateArgument::Pack) { in SubstituteExplicitTemplateArguments()
5669 if (Arg.getKind() == TemplateArgument::Pack) { in isTemplateTemplateParameterAtLeastAsSpecializedAs()
6140 case TemplateArgument::Pack: in MarkUsedTemplateParameters()