Home | History | Annotate | Download | only in Sema

Lines Matching refs:Partial

68     /// matching class template partial specializations).
782 if (auto *Partial = Scope->getPartiallySubstitutedPack(
784 PartialPackDepthIndex = getDepthAndIndex(Partial);
803 // If we partially expanded, this is the number of partial arguments.
1010 /// deduction for during partial ordering for a call
1011 /// (C++0x [temp.deduct.partial]).
1339 /// in the context of partial ordering (C++0x [temp.deduct.partial]).
1365 // C++11 [temp.deduct.partial]p5:
1366 // Before the partial ordering is done, certain transformations are
1367 // performed on the types used for partial ordering:
1379 // C++11 [temp.deduct.partial]p9:
1413 // C++11 [temp.deduct.partial]p7:
1999 // dependent number of elements. This can only occur during partial
2317 // partial ordering.
2495 // During partial ordering, if Ai was originally a pack expansion [and]
2928 /// Complete template argument deduction for a partial specialization.
2933 Sema &S, T *Partial, bool IsPartialOrdering,
2942 Sema::ContextRAII SavedContext(S, getAsDeclContextOrEnclosing(Partial));
2949 S, Partial, IsPartialOrdering, Deduced, Info, Builder))
2959 // arguments of the class template partial specialization, and
2964 auto *Template = Partial->getSpecializedTemplate();
2966 Partial->getTemplateArgsAsWritten();
2976 if (ParamIdx >= Partial->getTemplateParameters()->size())
2977 ParamIdx = Partial->getTemplateParameters()->size() - 1;
2980 Partial->getTemplateParameters()->getParam(ParamIdx));
2988 if (S.CheckTemplateArgumentList(Template, Partial->getLocation(), InstArgs,
3009 if (auto Result = CheckDeducedArgumentConstraints(S, Partial, Builder, Info))
3016 /// when partial ordering against a partial specialization.
3017 // FIXME: Factor out duplication with partial specialization version above.
3063 /// partial specialization per C++ [temp.class.spec.match].
3065 Sema::DeduceTemplateArguments(ClassTemplatePartialSpecializationDecl *Partial,
3068 if (Partial->isInvalidDecl())
3072 // A partial specialization matches a given actual template
3073 // argument list if the template arguments of the partial
3087 Deduced.resize(Partial->getTemplateParameters()->size());
3090 Partial->getTemplateParameters(),
3091 Partial->getTemplateArgs(),
3096 InstantiatingTemplate Inst(*this, Info.getLocation(), Partial, DeducedArgs,
3106 Result = ::FinishTemplateArgumentDeduction(*this, Partial,
3115 /// partial specialization per C++ [temp.class.spec.match].
3117 Sema::DeduceTemplateArguments(VarTemplatePartialSpecializationDecl *Partial,
3120 if (Partial->isInvalidDecl())
3124 // A partial specialization matches a given actual template
3125 // argument list if the template arguments of the partial
3139 Deduced.resize(Partial->getTemplateParameters()->size());
3141 *this, Partial->getTemplateParameters(), Partial->getTemplateArgs(),
3146 InstantiatingTemplate Inst(*this, Info.getLocation(), Partial, DeducedArgs,
3156 Result = ::FinishTemplateArgumentDeduction(*this, Partial,
3171 // by the template-arguments of the class template specialization or partial
4726 /// necessary to support partial ordering of templates using 'auto'.)
4734 /// dependent cases. This is necessary for template partial ordering with
5088 // C++0x [temp.deduct.partial]p3:
5090 // the partial ordering is done:
5141 // the partial ordering of function templates.
5177 // C++0x [temp.deduct.partial]p11:
5179 // deduction to succeed, but for partial ordering purposes a template
5181 // types being used for partial ordering. [ Note: a template parameter used
5222 // used for partial ordering, then deduction fails.
5251 /// to the rules of function template partial ordering (C++ [temp.func.order]).
5257 /// \param TPOC the context in which we are performing partial ordering of
5340 /// \param NoneDiag partial diagnostic used to diagnose cases where there are
5343 /// \param AmbigDiag partial diagnostic used to diagnose an ambiguity, if one
5346 /// \param CandidateDiag partial diagnostic used for each function template
5428 /// Determine whether one partial specialization, P1, is at least as
5440 // For two class template partial specializations, the first is at least as
5446 // first partial specialization and has a single function parameter
5448 // arguments of the first partial specialization, and
5450 // second partial specialization and has a single function parameter
5452 // arguments of the second partial specialization.
5455 // equivalent partial ordering by performing deduction directly on
5456 // the template arguments of the class template partial
5458 // general problem of function template partial ordering, because
5459 // class template partial specializations are more constrained. We
5461 // template partial specialization's template arguments, for
5491 /// Returns the more specialized class template partial specialization
5492 /// according to the rules of partial ordering of class template partial
5495 /// \param PS1 the first class template partial specialization
5497 /// \param PS2 the second class template partial specialization
5499 /// \returns the more specialized class template partial specialization. If
5500 /// neither partial specialization is more specialized, returns NULL.
5564 "the partial specializations being compared should specialize"
5600 // them for each partial specialization.
5640 // equivalent partial ordering by performing deduction directly on
5690 // as the function template corresponding to A according to the partial