clang: clang::TemplateDeclInstantiator Class Reference (original) (raw)

#include "[clang/Sema/Template.h](Template%5F8h%5Fsource.html)"

Public Types
enum class RewriteKind { None, RewriteSpaceshipAsEqualEqual }
using delayed_partial_spec_iterator = SmallVectorImpl< std::pair< ClassTemplateDecl *, ClassTemplatePartialSpecializationDecl * > >::iterator
using delayed_var_partial_spec_iterator = SmallVectorImpl< std::pair< VarTemplateDecl *, VarTemplatePartialSpecializationDecl * > >::iterator
Public Member Functions
TemplateDeclInstantiator (Sema &SemaRef, DeclContext *Owner, const MultiLevelTemplateArgumentList &TemplateArgs)
void setEvaluateConstraints (bool B)
bool getEvaluateConstraints ()
void adjustForRewrite (RewriteKind RK, FunctionDecl *Orig, QualType &T, TypeSourceInfo *&TInfo, DeclarationNameInfo &NameInfo)
Decl * VisitCXXMethodDecl (CXXMethodDecl *D, TemplateParameterList *TemplateParams, RewriteKind RK=RewriteKind::None)
Decl * VisitFunctionDecl (FunctionDecl *D, TemplateParameterList *TemplateParams, RewriteKind RK=RewriteKind::None)
Normal class members are of more specific types and therefore don't make it here.
Decl * VisitDecl (Decl *D)
Decl * VisitVarDecl (VarDecl *D, bool InstantiatingVarTemplate, ArrayRef< BindingDecl * > *Bindings=nullptr)
Decl * VisitBaseUsingDecls (BaseUsingDecl *D, BaseUsingDecl *Inst, LookupResult *Lookup)
void enableLateAttributeInstantiation (Sema::LateInstantiatedAttrVec *LA)
void disableLateAttributeInstantiation ()
LocalInstantiationScope * getStartingScope () const
delayed_partial_spec_iterator delayed_partial_spec_begin ()
Return an iterator to the beginning of the set of "delayed" partial specializations, which must be passed to InstantiateClassTemplatePartialSpecialization once the class definition has been completed.
delayed_var_partial_spec_iterator delayed_var_partial_spec_begin ()
delayed_partial_spec_iterator delayed_partial_spec_end ()
Return an iterator to the end of the set of "delayed" partial specializations, which must be passed to InstantiateClassTemplatePartialSpecialization once the class definition has been completed.
delayed_var_partial_spec_iterator delayed_var_partial_spec_end ()
TypeSourceInfo * SubstFunctionType (FunctionDecl *D, SmallVectorImpl< ParmVarDecl * > &Params)
bool InitFunctionInstantiation (FunctionDecl *New, FunctionDecl *Tmpl)
Initializes the common fields of an instantiation function declaration (New) from the corresponding fields of its template (Tmpl).
bool InitMethodInstantiation (CXXMethodDecl *New, CXXMethodDecl *Tmpl)
Initializes common fields of an instantiated method declaration (New) from the corresponding fields of its template (Tmpl).
bool SubstDefaultedFunction (FunctionDecl *New, FunctionDecl *Tmpl)
TemplateParameterList * SubstTemplateParams (TemplateParameterList *List)
Instantiates a nested template parameter list in the current instantiation context.
bool SubstQualifier (const DeclaratorDecl *OldDecl, DeclaratorDecl *NewDecl)
bool SubstQualifier (const TagDecl *OldDecl, TagDecl *NewDecl)
Decl * VisitVarTemplateSpecializationDecl (VarTemplateDecl *VarTemplate, VarDecl *FromVar, const TemplateArgumentListInfo &TemplateArgsInfo, ArrayRef< TemplateArgument > Converted, VarTemplateSpecializationDecl *PrevDecl=nullptr)
Decl * InstantiateTypedefNameDecl (TypedefNameDecl *D, bool IsTypeAlias)
Decl * InstantiateTypeAliasTemplateDecl (TypeAliasTemplateDecl *D)
ClassTemplatePartialSpecializationDecl * InstantiateClassTemplatePartialSpecialization (ClassTemplateDecl *ClassTemplate, ClassTemplatePartialSpecializationDecl *PartialSpec)
Instantiate the declaration of a class template partial specialization.
VarTemplatePartialSpecializationDecl * InstantiateVarTemplatePartialSpecialization (VarTemplateDecl *VarTemplate, VarTemplatePartialSpecializationDecl *PartialSpec)
Instantiate the declaration of a variable template partial specialization.
void InstantiateEnumDefinition (EnumDecl *Enum, EnumDecl *Pattern)
- Public Member Functions inherited from clang::declvisitor::Base< Ptr, ImplClass, RetTy >
RetTy Visit (PTR(Decl) D)
RetTy VisitDecl (PTR(Decl) D)

Definition at line 568 of file Template.h.

delayed_partial_spec_iterator

delayed_var_partial_spec_iterator

RewriteKind

Enumerator
None
RewriteSpaceshipAsEqualEqual

Definition at line 640 of file Template.h.

adjustForRewrite()

Definition at line 4176 of file SemaTemplateInstantiateDecl.cpp.

References clang::ASTContext::BoolTy, clang::Type::castAs(), clang::TypeLoc::castAs(), clang::Sema::Context, clang::ASTContext::DeclarationNames, clang::TypeLoc::getAsAdjusted(), clang::DeclarationNameTable::getCXXOperatorName(), clang::Decl::getEndLoc(), clang::ASTContext::getFunctionType(), clang::ASTContext::getTrivialTypeSourceInfo(), clang::TypeSourceInfo::getTypeLoc(), RewriteSpaceshipAsEqualEqual, clang::DeclarationNameInfo::setName(), clang::FunctionTypeLoc::setParam(), and clang::T.

Referenced by VisitCXXMethodDecl(), and VisitFunctionDecl().

delayed_partial_spec_begin()

Return an iterator to the beginning of the set of "delayed" partial specializations, which must be passed to InstantiateClassTemplatePartialSpecialization once the class definition has been completed.

Definition at line 684 of file Template.h.

Referenced by clang::Sema::InstantiateClass().

delayed_partial_spec_end()

Return an iterator to the end of the set of "delayed" partial specializations, which must be passed to InstantiateClassTemplatePartialSpecialization once the class definition has been completed.

Definition at line 696 of file Template.h.

Referenced by clang::Sema::InstantiateClass().

delayed_var_partial_spec_begin()

delayed_var_partial_spec_end()

disableLateAttributeInstantiation()

void clang::TemplateDeclInstantiator::disableLateAttributeInstantiation ( ) inline

enableLateAttributeInstantiation()

getEvaluateConstraints()

bool clang::TemplateDeclInstantiator::getEvaluateConstraints ( ) inline

getStartingScope()

InitFunctionInstantiation()

Initializes the common fields of an instantiation function declaration (New) from the corresponding fields of its template (Tmpl).

Returns

true if there was an error

Definition at line 4820 of file SemaTemplateInstantiateDecl.cpp.

References clang::atTemplateBegin(), clang::atTemplateEnd(), clang::Sema::CodeSynthesisContexts, clang::Sema::Context, clang::Definition, clang::EST_BasicNoexcept, clang::EST_DynamicNone, clang::EST_None, clang::EST_Unevaluated, clang::EST_Uninstantiated, clang::FunctionProtoType::ExtProtoInfo::ExceptionSpec, clang::Type::getAs(), clang::FunctionProtoType::getExtProtoInfo(), clang::ASTContext::getFunctionType(), clang::Sema::getLangOpts(), clang::ASTContext::getManglingNumber(), clang::FunctionType::getNoReturnAttr(), clang::FunctionProtoType::getParamTypes(), clang::FunctionType::getReturnType(), clang::ValueDecl::getType(), clang::FunctionProtoType::hasExceptionSpec(), clang::Sema::InstantiateAttrs(), clang::Sema::InstantiatingSpecializations, clang::FunctionDecl::isDefined(), clang::Decl::isImplicit(), clang::Decl::isInLocalScopeForInstantiation(), clang::Decl::setImplicit(), clang::ASTContext::setManglingNumber(), clang::ValueDecl::setType(), clang::FunctionProtoType::ExceptionSpecInfo::SourceDecl, clang::FunctionProtoType::ExceptionSpecInfo::SourceTemplate, clang::Sema::SubstExceptionSpec(), clang::Sema::TemplateInstCallbacks, and clang::FunctionProtoType::ExceptionSpecInfo::Type.

Referenced by InitMethodInstantiation(), and VisitFunctionDecl().

InitMethodInstantiation()

InstantiateClassTemplatePartialSpecialization()

Instantiate the declaration of a class template partial specialization.

Parameters

ClassTemplate the (instantiated) class template that is partially
PartialSpec the (uninstantiated) class template partial specialization that we are instantiating.

Returns

The instantiated partial specialization, if successful; otherwise, NULL to indicate an error.

Definition at line 4300 of file SemaTemplateInstantiateDecl.cpp.

References clang::ClassTemplateDecl::AddPartialSpecialization(), clang::ASTTemplateArgumentListInfo::arguments(), clang::Sema::CheckTemplateArgumentList(), clang::Sema::CheckTemplatePartialSpecialization(), clang::Sema::CheckTemplatePartialSpecializationArgs(), clang::Sema::Context, clang::ClassTemplatePartialSpecializationDecl::Create(), clang::SemaBase::Diag(), clang::ClassTemplateDecl::findPartialSpecialization(), clang::TypeDecl::getBeginLoc(), clang::Decl::getLocation(), clang::TagDecl::getTagKind(), clang::ClassTemplateSpecializationDecl::getTemplateArgsAsWritten(), clang::ClassTemplatePartialSpecializationDecl::getTemplateParameters(), clang::ASTContext::getTemplateSpecializationType(), clang::ASTContext::getTypeDeclType(), clang::ASTTemplateArgumentListInfo::LAngleLoc, clang::ASTTemplateArgumentListInfo::RAngleLoc, clang::ClassTemplatePartialSpecializationDecl::setInstantiatedFromMember(), clang::ClassTemplateSpecializationDecl::setTemplateArgsAsWritten(), clang::TemplateArgumentListInfo::size(), SubstQualifier(), clang::Sema::SubstTemplateArguments(), and SubstTemplateParams().

Referenced by clang::Sema::InstantiateClass().

InstantiateEnumDefinition()

void TemplateDeclInstantiator::InstantiateEnumDefinition ( EnumDecl * Enum,
EnumDecl * Pattern
)

Definition at line 1641 of file SemaTemplateInstantiateDecl.cpp.

References clang::Sema::ActOnEnumBody(), clang::Sema::CheckEnumConstant(), clang::Sema::ConstantEvaluated, clang::Sema::CurrentInstantiationScope, clang::Enum, clang::EnumDecl::enumerators(), clang::Decl::getDeclContext(), clang::Decl::getLocation(), clang::Sema::InstantiateAttrs(), clang::LocalInstantiationScope::InstantiatedLocal(), clang::DeclContext::isFunctionOrMethod(), isInvalid(), clang::Decl::setAccess(), clang::Decl::setInvalidDecl(), clang::Sema::SubstExpr(), and clang::Unevaluated.

Referenced by clang::Sema::InstantiateEnum().

InstantiateTypeAliasTemplateDecl()

Definition at line 1108 of file SemaTemplateInstantiateDecl.cpp.

References clang::MultiLevelTemplateArgumentList::begin(), clang::Sema::Context, clang::TypeAliasTemplateDecl::Create(), D, clang::Found, clang::Decl::getAccess(), clang::Decl::getBeginLoc(), clang::NamedDecl::getDeclName(), clang::Decl::getLocation(), clang::MultiLevelTemplateArgumentList::getNumLevels(), clang::Decl::getTemplateDepth(), InstantiateTypedefNameDecl(), clang::Sema::InstantiatingTemplate::isInvalid(), clang::DeclContext::lookup(), clang::Decl::setAccess(), clang::TypeAliasDecl::setDescribedAliasTemplate(), clang::RedeclarableTemplateDecl::setInstantiatedFromMemberTemplate(), clang::Redeclarable< decl_type >::setPreviousDecl(), and SubstTemplateParams().

InstantiateTypedefNameDecl()

Definition at line 1014 of file SemaTemplateInstantiateDecl.cpp.

References clang::Type::castAs(), clang::Sema::Context, clang::TypedefDecl::Create(), clang::TypeAliasDecl::Create(), D, clang::Sema::FindInstantiatedDecl(), clang::Decl::getAccess(), clang::Type::getAs(), clang::Decl::getBeginLoc(), clang::Decl::getDeclContext(), clang::NamedDecl::getIdentifier(), clang::Decl::getLocation(), clang::QualType::getNonReferenceType(), getPreviousDeclForInstantiation(), clang::Sema::getSourceManager(), clang::Sema::getStdNamespace(), clang::ASTContext::getTrivialTypeSourceInfo(), clang::TypeSourceInfo::getType(), clang::TagDecl::getTypedefNameForAnonDecl(), clang::DecltypeType::getUnderlyingExpr(), clang::TagDecl::hasNameForLinkage(), clang::Sema::inferGslPointerAttribute(), clang::Sema::InstantiateAttrs(), clang::ASTContext::IntTy, clang::Invalid, clang::Sema::isIncompatibleTypedef(), clang::Type::isInstantiationDependentType(), clang::SourceManager::isInSystemHeader(), clang::Decl::isReferenced(), clang::Type::isReferenceType(), clang::IdentifierInfo::isStr(), clang::Type::isVariablyModifiedType(), clang::Sema::MarkDeclarationsReferencedInType(), clang::Decl::setAccess(), clang::Decl::setInvalidDecl(), clang::Redeclarable< decl_type >::setPreviousDecl(), clang::Decl::setReferenced(), clang::TagDecl::setTypedefNameForAnonDecl(), and clang::Sema::SubstType().

Referenced by InstantiateTypeAliasTemplateDecl().

InstantiateVarTemplatePartialSpecialization()

Instantiate the declaration of a variable template partial specialization.

Parameters

VarTemplate the (instantiated) variable template that is partially specialized by the instantiation of PartialSpec.
PartialSpec the (uninstantiated) variable template partial specialization that we are instantiating.

Returns

The instantiated partial specialization, if successful; otherwise, NULL to indicate an error.

Definition at line 4414 of file SemaTemplateInstantiateDecl.cpp.

References clang::VarTemplateDecl::AddPartialSpecialization(), clang::ASTTemplateArgumentListInfo::arguments(), clang::Sema::BuildVariableInstantiation(), clang::Sema::CheckTemplateArgumentList(), clang::Sema::CheckTemplatePartialSpecialization(), clang::Sema::CheckTemplatePartialSpecializationArgs(), clang::Sema::Context, clang::VarTemplatePartialSpecializationDecl::Create(), clang::SemaBase::Diag(), clang::VarTemplateDecl::findPartialSpecialization(), clang::NamedDecl::getDeclName(), clang::DeclaratorDecl::getInnerLocStart(), clang::Decl::getLocation(), clang::VarDecl::getStorageClass(), clang::VarTemplateSpecializationDecl::getTemplateArgsAsWritten(), clang::VarTemplatePartialSpecializationDecl::getTemplateParameters(), clang::TypeSourceInfo::getType(), clang::DeclaratorDecl::getTypeSourceInfo(), clang::DeclaratorDecl::getTypeSpecStartLoc(), clang::Type::isFunctionType(), clang::VarDecl::isStaticDataMember(), clang::ASTTemplateArgumentListInfo::LAngleLoc, clang::ASTTemplateArgumentListInfo::RAngleLoc, clang::VarTemplatePartialSpecializationDecl::setInstantiatedFromMember(), clang::VarTemplateSpecializationDecl::setTemplateArgsAsWritten(), clang::TemplateArgumentListInfo::size(), SubstQualifier(), clang::Sema::SubstTemplateArguments(), SubstTemplateParams(), and clang::Sema::SubstType().

Referenced by clang::Sema::InstantiateClass().

setEvaluateConstraints()

void clang::TemplateDeclInstantiator::setEvaluateConstraints ( bool B) inline

SubstDefaultedFunction()

Definition at line 4922 of file SemaTemplateInstantiateDecl.cpp.

References clang::Sema::Context, clang::FunctionDecl::DefaultedOrDeletedFunctionInfo::Create(), D, clang::Sema::FindInstantiatedDecl(), clang::Decl::getAccess(), clang::FunctionDecl::getDefalutedOrDeletedInfo(), clang::Decl::getLocation(), clang::DeclAccessPair::make(), clang::Sema::SetDeclDefaulted(), and clang::FunctionDecl::setDefaultedOrDeletedInfo().

Referenced by VisitCXXMethodDecl(), and VisitFunctionDecl().

SubstFunctionType()

Definition at line 4527 of file SemaTemplateInstantiateDecl.cpp.

References clang::Sema::BuildParmVarDeclForTypedef(), clang::TypeLoc::castAs(), clang::Sema::CurrentInstantiationScope, D, clang::TypeLoc::getAs(), clang::Decl::getLocation(), clang::Sema::getNumArgumentsInExpansion(), clang::FunctionTypeLoc::getParam(), clang::FunctionProtoType::getParamType(), clang::ValueDecl::getType(), clang::TypeSourceInfo::getTypeLoc(), clang::TypeLoc::IgnoreParens(), clang::VarDecl::isParameterPack(), clang::Sema::SubstFunctionDeclType(), and clang::Sema::SubstParmTypes().

Referenced by VisitCXXMethodDecl(), and VisitFunctionDecl().

SubstQualifier() [1/2]

SubstQualifier() [2/2]

bool TemplateDeclInstantiator::SubstQualifier ( const TagDecl * OldDecl,
TagDecl * NewDecl
)

SubstTemplateParams()

Instantiates a nested template parameter list in the current instantiation context.

Parameters

L The parameter list to instantiate

Returns

NULL if there was an error

Definition at line 4252 of file SemaTemplateInstantiateDecl.cpp.

References clang::Sema::Context, clang::TemplateParameterList::Create(), D, clang::TemplateParameterList::getLAngleLoc(), clang::TemplateParameterList::getRAngleLoc(), clang::TemplateParameterList::getRequiresClause(), clang::TemplateParameterList::getTemplateLoc(), clang::Invalid, clang::Decl::isInvalidDecl(), P, clang::TemplateParameterList::size(), and clang::declvisitor::Base< Ptr, ImplClass, RetTy >::Visit().

Referenced by InstantiateClassTemplatePartialSpecialization(), InstantiateTypeAliasTemplateDecl(), InstantiateVarTemplatePartialSpecialization(), clang::Sema::SubstTemplateParams(), and VisitCXXMethodDecl().

VisitBaseUsingDecls()

Definition at line 3367 of file SemaTemplateInstantiateDecl.cpp.

References clang::Sema::BuildUsingShadowDecl(), clang::Sema::CheckUsingShadowDecl(), clang::Sema::Context, clang::UnresolvedUsingIfExistsDecl::Create(), clang::Sema::CurrentInstantiationScope, D, clang::Sema::FindInstantiatedDecl(), getPreviousDeclForInstantiation(), clang::LocalInstantiationScope::InstantiatedLocal(), clang::DeclContext::isFunctionOrMethod(), and clang::ASTContext::setInstantiatedFromUsingShadowDecl().

VisitCXXMethodDecl()

Definition at line 2536 of file SemaTemplateInstantiateDecl.cpp.

References clang::DeclContext::addDecl(), adjustForRewrite(), adjustFunctionTypeForInstantiation(), clang::CXXScopeSpec::Adopt(), clang::TemplateParameterList::asArray(), clang::Sema::CheckFriendAccess(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::CheckFunctionTemplateSpecialization(), clang::Sema::CheckOverrideControl(), clang::Sema::CheckPureMethod(), clang::Sema::CodeSynthesisContexts, clang::Sema::CompleteMemberSpecialization(), clang::Sema::computeDeclContext(), clang::Sema::Context, clang::CXXDestructorDecl::Create(), clang::CXXConversionDecl::Create(), clang::CXXConstructorDecl::Create(), clang::CXXMethodDecl::Create(), clang::FunctionTemplateDecl::Create(), clang::TemplateParameterList::Create(), clang::TemplateArgumentList::CreateCopy(), clang::Sema::CreateRecoveryExpr(), D, clang::ASTContext::DeclarationNames, clang::Sema::CodeSynthesisContext::DeducedTemplateArgumentSubstitution, clang::Destructor, clang::Sema::FindInstantiatedContext(), clang::Sema::FindInstantiatedDecl(), clang::FunctionTemplateDecl::findSpecialization(), clang::Decl::FOK_None, clang::ActionResult< PtrTy, Compress >::get(), clang::Decl::getAccess(), clang::Stmt::getBeginLoc(), clang::ASTContext::getCanonicalType(), clang::DeclarationNameTable::getCXXDestructorName(), clang::Decl::getDeclContext(), clang::NamedDecl::getDeclName(), clang::Decl::getEndLoc(), clang::Stmt::getEndLoc(), clang::Decl::getFriendObjectKind(), clang::ExplicitSpecifier::getFromDecl(), clang::MultiLevelTemplateArgumentList::getInnermost(), clang::TemplateParameterList::getLAngleLoc(), clang::Decl::getLexicalDeclContext(), clang::Decl::getLocation(), clang::Decl::getPreviousDecl(), clang::Redeclarable< decl_type >::getPreviousDecl(), clang::TemplateParameterList::getRAngleLoc(), clang::TemplateParameterList::getRequiresClause(), clang::TemplateParameterList::getTemplateLoc(), clang::ASTContext::getTrivialTypeSourceInfo(), clang::Expr::getType(), clang::ASTContext::getTypeDeclType(), clang::Decl::hasAttr(), InitMethodInstantiation(), clang::Sema::instantiateExplicitSpecifier(), clang::CXXMethodDecl::isCopyAssignmentOperator(), clang::Decl::isInLocalScopeForInstantiation(), clang::Decl::isInvalidDecl(), clang::CXXMethodDecl::isMoveAssignmentOperator(), clang::Decl::isOutOfLine(), clang::FunctionDecl::isThisDeclarationADefinition(), clang::ActionResult< PtrTy, Compress >::isUsable(), Loc, clang::Sema::LookupOrdinaryName, clang::Sema::LookupQualifiedName(), clang::Sema::MarkFunctionReferenced(), None, P, Previous, clang::Sema::RequireCompleteDeclContext(), clang::SC_None, clang::SC_Static, clang::Decl::setAccess(), clang::Sema::SetDeclDeleted(), clang::NamedDecl::setDeclName(), clang::FunctionDecl::setDescribedFunctionTemplate(), clang::FunctionDecl::setFunctionTemplateSpecialization(), clang::FunctionDecl::setImplicitlyInline(), clang::FunctionDecl::setIneligibleOrNotSelected(), clang::FunctionDecl::setInstantiationOfMemberFunction(), clang::Decl::setInvalidDecl(), clang::ExplicitSpecifier::setKind(), clang::TemplateArgumentListInfo::setLAngleLoc(), clang::Decl::setLexicalDeclContext(), clang::Decl::setObjectOfFriendDecl(), clang::FunctionDecl::setParams(), clang::DeclaratorDecl::setQualifierInfo(), clang::FunctionDecl::setRangeEnd(), clang::TemplateArgumentListInfo::setRAngleLoc(), clang::DeclaratorDecl::setTemplateParameterListsInfo(), clang::TemplateParameterList::size(), clang::Sema::SubstDeclarationNameInfo(), clang::Sema::SubstDefaultArgument(), SubstDefaultedFunction(), SubstFunctionType(), clang::Sema::SubstNestedNameSpecifierLoc(), clang::Sema::SubstTemplateArguments(), SubstTemplateParams(), clang::T, clang::TSK_ImplicitInstantiation, and clang::Unresolved.

Referenced by clang::Sema::SubstSpaceshipAsEqualEqual().

VisitDecl()

Decl * TemplateDeclInstantiator::VisitDecl ( Decl * D )

VisitFunctionDecl()

Normal class members are of more specific types and therefore don't make it here.

This function serves three purposes: 1) instantiating function templates 2) substituting friend and local function declarations 3) substituting deduction guide declarations for nested class templates

Definition at line 2156 of file SemaTemplateInstantiateDecl.cpp.

References clang::Sema::adjustContextForLocalExternDecl(), adjustForRewrite(), adjustFunctionTypeForInstantiation(), clang::CXXScopeSpec::Adopt(), clang::TemplateParameterList::asArray(), clang::Sema::CodeSynthesisContext::BuildingDeductionGuides, clang::Sema::CheckFunctionDeclaration(), clang::Sema::CheckFunctionTemplateSpecialization(), clang::Sema::CheckTemplateParameterList(), clang::Sema::CodeSynthesisContexts, clang::Sema::computeDeclContext(), clang::Sema::Context, clang::FunctionTemplateDecl::Create(), clang::CXXDeductionGuideDecl::Create(), clang::FunctionDecl::Create(), clang::TemplateParameterList::Create(), clang::TemplateArgumentList::CreateCopy(), clang::Sema::CreateRecoveryExpr(), clang::Sema::CurContext, D, clang::Sema::FilterLookupForScope(), clang::Sema::FindInstantiatedContext(), clang::Sema::FindInstantiatedDecl(), clang::FunctionTemplateDecl::findSpecialization(), clang::Decl::FOK_None, clang::Sema::forRedeclarationInCurContext(), clang::Function, clang::ActionResult< PtrTy, Compress >::get(), clang::Decl::getAccess(), clang::Stmt::getBeginLoc(), clang::Decl::getCanonicalDecl(), clang::Decl::getDeclContext(), clang::FunctionDecl::getDescribedFunctionTemplate(), clang::SourceRange::getEnd(), clang::Stmt::getEndLoc(), clang::Decl::getFriendObjectKind(), clang::MultiLevelTemplateArgumentList::getInnermost(), clang::TemplateParameterList::getLAngleLoc(), clang::Decl::getLocation(), clang::FunctionTemplateDecl::getPreviousDecl(), clang::TemplateParameterList::getRAngleLoc(), clang::DeclContext::getRedeclContext(), clang::TemplateParameterList::getRequiresClause(), clang::Decl::getSourceRange(), clang::TemplateParameterList::getTemplateLoc(), clang::TemplateDecl::getTemplateParameters(), clang::Expr::getType(), clang::Decl::hasBody(), clang::NestedNameSpecifierLoc::hasQualifier(), clang::Decl::IDNS_Ordinary, InitFunctionInstantiation(), clang::Sema::instantiateExplicitSpecifier(), clang::DeclContext::isFileContext(), clang::DeclContext::isFunctionOrMethod(), clang::Decl::isInIdentifierNamespace(), clang::ExplicitSpecifier::isInvalid(), clang::Decl::isLocalExternDecl(), clang::Decl::isOutOfLine(), clang::DeclContext::isRecord(), clang::ActionResult< PtrTy, Compress >::isUsable(), Loc, clang::Sema::LookupOrdinaryName, clang::Sema::LookupQualifiedName(), clang::Sema::LookupRedeclarationWithLinkage, clang::DeclContext::makeDeclVisibleInContext(), None, P, clang::Sema::PendingLocalImplicitInstantiations, Previous, clang::Sema::SetDeclDeleted(), clang::RedeclarableTemplateDecl::setInstantiatedFromMemberTemplate(), clang::TemplateArgumentListInfo::setLAngleLoc(), clang::Decl::setLexicalDeclContext(), clang::Decl::setNonMemberOperator(), clang::TemplateArgumentListInfo::setRAngleLoc(), clang::TemplateParameterList::size(), clang::Sema::SubstDeclarationNameInfo(), clang::Sema::SubstDefaultArgument(), SubstDefaultedFunction(), SubstFunctionType(), clang::Sema::SubstNestedNameSpecifierLoc(), clang::Sema::SubstTemplateArguments(), clang::T, clang::Sema::TPC_FriendFunctionTemplate, clang::Sema::TPC_FriendFunctionTemplateDefinition, and clang::TSK_ImplicitInstantiation.

Referenced by clang::Sema::SubstSpaceshipAsEqualEqual().

VisitVarDecl()

VisitVarTemplateSpecializationDecl()

Definition at line 4035 of file SemaTemplateInstantiateDecl.cpp.

References clang::Sema::CheckSpecializationInstantiationRedecl(), clang::Sema::CheckTemplateArgumentList(), D, clang::Sema::FindInstantiatedDecl(), clang::VarTemplateDecl::findSpecialization(), clang::Decl::getLocation(), clang::VarTemplateSpecializationDecl::getPointOfInstantiation(), clang::VarTemplateSpecializationDecl::getSpecializationKind(), clang::TemplateArgumentListInfo::setLAngleLoc(), clang::TemplateArgumentListInfo::setRAngleLoc(), clang::Sema::SubstTemplateArguments(), and VisitVarTemplateSpecializationDecl().

Referenced by clang::Sema::BuildVarTemplateInstantiation(), clang::Sema::InstantiateVariableDefinition(), and VisitVarTemplateSpecializationDecl().


The documentation for this class was generated from the following files: