Home | History | Annotate | Download | only in Sema

Lines Matching refs:Partial

1808   // class template partial specialization, or class template specialization.
1891 // In a redeclaration, partial specialization, explicit
3218 if (ClassTemplatePartialSpecializationDecl *Partial
3220 ExpectedTemplateParams = Partial->getTemplateParameters();
4175 static void checkMoreSpecializedThanPrimary(Sema &S, PartialSpecDecl *Partial) {
4176 if (Partial->getDeclContext()->isDependentContext())
4181 TemplateDeductionInfo Info(Partial->getLocation());
4182 if (S.isMoreSpecializedThanPrimary(Partial, Info))
4185 auto *Template = Partial->getSpecializedTemplate();
4186 S.Diag(Partial->getLocation(),
4204 Partial->getAssociatedConstraints(PartialAC);
4205 S.MaybeEmitAmbiguousAtomicConstraintsDiagnostic(Partial, PartialAC, Template,
4228 PartialSpecDecl *Partial) {
4232 checkMoreSpecializedThanPrimary(S, Partial);
4238 // If the template arguments of a partial specialization cannot be
4241 auto *TemplateParams = Partial->getTemplateParameters();
4243 S.MarkUsedTemplateParameters(Partial->getTemplateArgs(), true,
4248 S.Diag(Partial->getLocation(), diag::ext_partial_specs_not_deducible)
4249 << isa<VarTemplatePartialSpecializationDecl>(Partial)
4251 << SourceRange(Partial->getLocation(),
4252 Partial->getTemplateArgsAsWritten()->RAngleLoc);
4258 ClassTemplatePartialSpecializationDecl *Partial) {
4259 checkTemplatePartialSpecialization(*this, Partial);
4263 VarTemplatePartialSpecializationDecl *Partial) {
4264 checkTemplatePartialSpecialization(*this, Partial);
4337 // Find the variable template (partial) specialization declaration that
4399 // Create a new class template partial specialization declaration node.
4402 VarTemplatePartialSpecializationDecl *Partial =
4409 VarTemplate->AddPartialSpecialization(Partial, InsertPos);
4410 Specialization = Partial;
4417 CheckTemplatePartialSpecialization(Partial);
4486 /// A partial specialization whose template arguments have matched
4489 VarTemplatePartialSpecializationDecl *Partial;
4526 // the set of specializations, based on the closest partial specialization
4539 // 1. Attempt to find the closest partial specialization that this
4548 VarTemplatePartialSpecializationDecl *Partial = PartialSpecs[I];
4552 DeduceTemplateArguments(Partial, TemplateArgList, Info)) {
4556 DeclAccessPair::make(Template, AS_public), Partial,
4561 Matched.back().Partial = Partial;
4574 // partial order rules (14.5.4.2) are used to determine
4583 if (getMoreSpecializedPartialSpecialization(P->Partial, Best->Partial,
4585 P->Partial)
4589 // Determine if the best partial specialization is more specialized than
4595 P->Partial, Best->Partial,
4596 PointOfInstantiation) != Best->Partial) {
4603 // Instantiate using the best variable template partial specialization.
4604 InstantiationPattern = Best->Partial;
4623 // Partial ordering did not produce a clear winner. Complain.
4628 // Print the matching partial specializations.
4630 Diag(P.Partial->getLocation(), diag::note_partial_spec_match)
4631 << getTemplateArgumentBindingsText(P.Partial->getTemplateParameters(),
5771 // If we're checking a partial template argument list, we're done.
5787 // got a partial argument list for a function template, so just bail out.
5887 // If we're performing a partial argument substitution, allow any trailing
6818 // arguments line up properly in partial ordering.
6876 // 'auto'. It's not clear how partial ordering with 'auto' is supposed to
6896 // contains an unexpanded pack during partial ordering, and there's
7399 // partial specializations are not considered even if their
7404 // partial specializations.
7439 // [...] If both deductions succeed, the partial ordering selects the
7931 // A template, explicit specialization, or partial specialization shall not
7950 // A partial specialization may be declared in any scope in which the
8007 /// \param IsPartialSpecialization whether this is a partial specialization of
8051 // A class template partial specialization may be declared in any
8105 /// that checks non-type template partial specialization arguments.
8145 // Within the argument list of a class template partial
8148 // shall not involve a template parameter of the partial
8193 /// partial specialization according to C++ [temp.class.spec]p9.
8200 /// partial specialization.
8358 // Find the class template (partial) specialization declaration that
8400 // arguments of the class template partial specialization.
8430 // Create a new class template partial specialization declaration node.
8433 ClassTemplatePartialSpecializationDecl *Partial
8443 SetNestedNameSpecifier(*this, Partial, SS);
8445 Partial->setTemplateParameterListsInfo(
8450 ClassTemplate->AddPartialSpecialization(Partial, InsertPos);
8451 Specialization = Partial;
8458 CheckTemplatePartialSpecialization(Partial);
9130 // implicitly generated (during template argument deduction for partial
10794 /// a class template (or class template partial specialization) that was parsed
10796 /// partial specialization thereof). This routine will rebuild that type now
10989 /// A partial specialization shall be declared before the first use of a
10990 /// class template specialization that would make use of the partial