Home | History | Annotate | Download | only in Sema

Lines Matching refs:Partial

36     /// matching class template partial specializations).
104 /// performing template argument deduction for partial ordering of function
699 /// deduction for during partial ordering for a call
700 /// (C++0x [temp.deduct.partial]).
703 /// in the context of partial ordering, the set of qualifier comparisons.
920 /// in the context of partial ordering (C++0x [temp.deduct.partial]).
923 /// in the context of partial ordering, the set of qualifier comparisons.
950 // C++0x [temp.deduct.partial]p5:
951 // Before the partial ordering is done, certain transformations are
952 // performed on the types used for partial ordering:
964 // C++0x [temp.deduct.partial]p6:
968 // to be equally cv-qualified for partial ordering purposes. The result
987 // C++0x [temp.deduct.partial]p7:
1553 // dependent number of elements. This can only occur during partial
1642 // partial ordering.
2125 /// Complete template argument deduction for a class template partial
2129 ClassTemplatePartialSpecializationDecl *Partial,
2137 Sema::ContextRAII SavedContext(S, Partial);
2143 TemplateParameterList *PartialParams = Partial->getTemplateParameters();
2180 Partial, NTTPType, 0, Info, false,
2198 // arguments of the class template partial specialization, and
2203 ClassTemplateDecl *ClassTemplate = Partial->getSpecializedTemplate();
2205 = Partial->getTemplateArgsAsWritten();
2211 Partial->getNumTemplateArgsAsWritten(),
2214 if (ParamIdx >= Partial->getTemplateParameters()->size())
2215 ParamIdx = Partial->getTemplateParameters()->size() - 1;
2219 Partial->getTemplateParameters()->getParam(ParamIdx));
2226 if (S.CheckTemplateArgumentList(ClassTemplate, Partial->getLocation(),
2250 /// partial specialization per C++ [temp.class.spec.match].
2252 Sema::DeduceTemplateArguments(ClassTemplatePartialSpecializationDecl *Partial,
2255 if (Partial->isInvalidDecl())
2259 // A partial specialization matches a given actual template
2260 // argument list if the template arguments of the partial
2269 Deduced.resize(Partial->getTemplateParameters()->size());
2272 Partial->getTemplateParameters(),
2273 Partial->getTemplateArgs(),
2278 InstantiatingTemplate Inst(*this, Partial->getLocation(), Partial,
2286 return ::FinishTemplateArgumentDeduction(*this, Partial, TemplateArgs,
2290 /// Complete template argument deduction for a variable template partial
2294 Sema &S, VarTemplatePartialSpecializationDecl *Partial,
2306 TemplateParameterList *PartialParams = Partial->getTemplateParameters();
2340 if (ConvertDeducedTemplateArgument(S, Param, Deduced[I], Partial, NTTPType,
2357 // arguments of the class template partial specialization, and
2362 VarTemplateDecl *VarTemplate = Partial->getSpecializedTemplate();
2364 Partial->getTemplateArgsAsWritten();
2369 if (S.Subst(PartialTemplateArgs, Partial->getNumTemplateArgsAsWritten(),
2372 if (ParamIdx >= Partial->getTemplateParameters()->size())
2373 ParamIdx = Partial->getTemplateParameters()->size() - 1;
2376 Partial->getTemplateParameters()->getParam(ParamIdx));
2382 if (S.CheckTemplateArgumentList(VarTemplate, Partial->getLocation(), InstArgs,
2405 /// partial specialization per C++ [temp.class.spec.match].
2408 Sema::DeduceTemplateArguments(VarTemplatePartialSpecializationDecl *Partial,
2411 if (Partial->isInvalidDecl())
2415 // A partial specialization matches a given actual template
2416 // argument list if the template arguments of the partial
2425 Deduced.resize(Partial->getTemplateParameters()->size());
2427 *this, Partial->getTemplateParameters(), Partial->getTemplateArgs(),
2432 InstantiatingTemplate Inst(*this, Partial->getLocation(), Partial,
2440 return ::FinishTemplateArgumentDeduction(*this, Partial, TemplateArgs,
3988 // C++0x [temp.deduct.partial]p3:
3990 // the partial ordering is done:
4038 // the partial ordering of function templates.
4076 // C++0x [temp.deduct.partial]p11:
4078 // deduction to succeed, but for partial ordering purposes a template
4080 // types being used for partial ordering. [ Note: a template parameter used
4126 // used for partial ordering, then deduction fails.
4155 /// to the rules of function template partial ordering (C++ [temp.func.order]).
4161 /// \param TPOC the context in which we are performing partial ordering of
4188 // C++0x [temp.deduct.partial]p10:
4198 // C++0x [temp.deduct.partial]p9:
4283 /// \param TPOC the partial ordering context to use to compare the function
4292 /// \param NoneDiag partial diagnostic used to diagnose cases where there are
4295 /// \param AmbigDiag partial diagnostic used to diagnose an ambiguity, if one
4298 /// \param CandidateDiag partial diagnostic used for each function template
4381 /// \brief Returns the more specialized class template partial specialization
4382 /// according to the rules of partial ordering of class template partial
4385 /// \param PS1 the first class template partial specialization
4387 /// \param PS2 the second class template partial specialization
4389 /// \returns the more specialized class template partial specialization. If
4390 /// neither partial specialization is more specialized, returns NULL.
4397 // For two class template partial specializations, the first is at least as
4403 // first partial specialization and has a single function parameter
4405 // arguments of the first partial specialization, and
4407 // second partial specialization and has a single function parameter
4409 // arguments of the second partial specialization.
4412 // equivalent partial ordering by performing deduction directly on
4413 // the template arguments of the class template partial
4415 // general problem of function template partial ordering, because
4416 // class template partial specializations are more constrained. We
4418 // template partial specialization's template arguments, for
4472 "the partial specializations being compared should specialize"