Lines Matching full:partial

70     /// matching class template partial specializations).
932 if (auto *Partial = Scope->getPartiallySubstitutedPack(
934 PartialPackDepthIndex = getDepthAndIndex(Partial);
953 // If we partially expanded, this is the number of partial arguments.
1184 /// deduction for during partial ordering for a call
1185 /// (C++0x [temp.deduct.partial]).
1294 // During partial ordering, if Ai was originally a function parameter pack:
1519 /// in the context of partial ordering (C++0x [temp.deduct.partial]).
1537 // C++11 [temp.deduct.partial]p5:
1538 // Before the partial ordering is done, certain transformations are
1539 // performed on the types used for partial ordering:
1551 // C++11 [temp.deduct.partial]p9:
1582 // C++11 [temp.deduct.partial]p7:
2106 // dependent number of elements. This can only occur during partial
2421 // partial ordering.
2602 // During partial ordering, if Ai was originally a pack expansion [and]
2725 // During partial ordering, if Ai was originally a pack expansion:
3092 // template args when this is a variable template partial specialization and
3110 /// Complete template argument deduction for a partial specialization.
3115 Sema &S, T *Partial, bool IsPartialOrdering,
3124 Sema::ContextRAII SavedContext(S, getAsDeclContextOrEnclosing(Partial));
3131 S, Partial, IsPartialOrdering, Deduced, Info, SugaredBuilder,
3145 // arguments of the class template partial specialization, and
3150 auto *Template = Partial->getSpecializedTemplate();
3152 Partial->getTemplateArgsAsWritten();
3158 MultiLevelTemplateArgumentList(Partial,
3163 if (ParamIdx >= Partial->getTemplateParameters()->size())
3164 ParamIdx = Partial->getTemplateParameters()->size() - 1;
3167 Partial->getTemplateParameters()->getParam(ParamIdx));
3177 Template, Partial->getLocation(), InstArgs, false,
3199 if (auto Result = CheckDeducedArgumentConstraints(S, Partial, SugaredBuilder,
3208 /// when partial ordering against a partial specialization.
3209 // FIXME: Factor out duplication with partial specialization version above.
3293 /// arguments match the given class or variable template partial specialization
3298 DeduceTemplateArguments(Sema &S, T *Partial,
3301 if (Partial->isInvalidDecl())
3305 // A partial specialization matches a given actual template
3306 // argument list if the template arguments of the partial
3320 Deduced.resize(Partial->getTemplateParameters()->size());
3322 S, Partial->getTemplateParameters(),
3323 Partial->getTemplateArgs().asArray(), TemplateArgs, Info, Deduced,
3329 Sema::InstantiatingTemplate Inst(S, Info.getLocation(), Partial, DeducedArgs,
3339 Result = ::FinishTemplateArgumentDeduction(S, Partial,
3347 Sema::DeduceTemplateArguments(ClassTemplatePartialSpecializationDecl *Partial,
3350 return ::DeduceTemplateArguments(*this, Partial, TemplateArgs, Info);
3353 Sema::DeduceTemplateArguments(VarTemplatePartialSpecializationDecl *Partial,
3356 return ::DeduceTemplateArguments(*this, Partial, TemplateArgs, Info);
3419 // by the template-arguments of the class template specialization or partial
5423 // C++0x [temp.deduct.partial]p3:
5425 // the partial ordering is done:
5458 // C++0x [temp.deduct.partial]p11:
5460 // deduction to succeed, but for partial ordering purposes a template
5462 // types being used for partial ordering. [ Note: a template parameter used
5499 // specification as used during partial ordering to prevent the following
5523 // used for partial ordering, then deduction fails.
5596 // the partial ordering of function templates.
5607 // C++ [temp.deduct.partial]p10:
5616 // C++ [temp.deduct.partial]p11:
5716 // Otherwise, if the context in which the partial ordering is done is
5846 /// Determine whether one partial specialization, P1, is at least as
5858 // For two class template partial specializations, the first is at least as
5864 // first partial specialization and has a single function parameter
5866 // arguments of the first partial specialization, and
5868 // second partial specialization and has a single function parameter
5870 // arguments of the second partial specialization.
5873 // equivalent partial ordering by performing deduction directly on
5874 // the template arguments of the class template partial
5876 // general problem of function template partial ordering, because
5877 // class template partial specializations are more constrained. We
5879 // template partial specialization's template arguments, for
5973 /// - If IsMoreSpecialThanPrimaryCheck is true, T1/P1 is the partial
5975 /// - otherwise, both T1/P1 and T2/P2 are the partial specialization.
5977 /// \param T1 the type of the first template partial specialization
5980 /// template partial specialization; otherwise, the type of the
5983 /// \param P1 the first template partial specialization
5986 /// partial specialization; otherwise, the primary template.
5990 /// - otherwise, returns the more specialized template partial
5991 /// specialization. If neither partial specialization is more
6008 // C++ [temp.deduct.partial]p10:
6114 "the partial specializations being compared should specialize"
6153 // equivalent partial ordering by performing deduction directly on
6208 // as the function template corresponding to A according to the partial
6212 // applying the partial ordering rules for function templates on