clang 19.0.0git
Public Types | Public Member Functions | List of all members
clang::TemplateDeclInstantiator Class Reference

#include "clang/Sema/Template.h"

Inheritance diagram for clang::TemplateDeclInstantiator:
Inheritance graph
[legend]

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)
 
DeclVisitCXXMethodDecl (CXXMethodDecl *D, TemplateParameterList *TemplateParams, RewriteKind RK=RewriteKind::None)
 
DeclVisitFunctionDecl (FunctionDecl *D, TemplateParameterList *TemplateParams, RewriteKind RK=RewriteKind::None)
 Normal class members are of more specific types and therefore don't make it here.
 
DeclVisitDecl (Decl *D)
 
DeclVisitVarDecl (VarDecl *D, bool InstantiatingVarTemplate, ArrayRef< BindingDecl * > *Bindings=nullptr)
 
DeclVisitBaseUsingDecls (BaseUsingDecl *D, BaseUsingDecl *Inst, LookupResult *Lookup)
 
void enableLateAttributeInstantiation (Sema::LateInstantiatedAttrVec *LA)
 
void disableLateAttributeInstantiation ()
 
LocalInstantiationScopegetStartingScope () 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 ()
 
TypeSourceInfoSubstFunctionType (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)
 
TemplateParameterListSubstTemplateParams (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)
 
DeclVisitVarTemplateSpecializationDecl (VarTemplateDecl *VarTemplate, VarDecl *FromVar, const TemplateArgumentListInfo &TemplateArgsInfo, ArrayRef< TemplateArgument > Converted, VarTemplateSpecializationDecl *PrevDecl=nullptr)
 
DeclInstantiateTypedefNameDecl (TypedefNameDecl *D, bool IsTypeAlias)
 
ClassTemplatePartialSpecializationDeclInstantiateClassTemplatePartialSpecialization (ClassTemplateDecl *ClassTemplate, ClassTemplatePartialSpecializationDecl *PartialSpec)
 Instantiate the declaration of a class template partial specialization.
 
VarTemplatePartialSpecializationDeclInstantiateVarTemplatePartialSpecialization (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)
 

Detailed Description

Definition at line 558 of file Template.h.

Member Typedef Documentation

◆ delayed_partial_spec_iterator

Definition at line 661 of file Template.h.

◆ delayed_var_partial_spec_iterator

Definition at line 664 of file Template.h.

Member Enumeration Documentation

◆ RewriteKind

Enumerator
None 
RewriteSpaceshipAsEqualEqual 

Definition at line 627 of file Template.h.

Constructor & Destructor Documentation

◆ TemplateDeclInstantiator()

clang::TemplateDeclInstantiator::TemplateDeclInstantiator ( Sema SemaRef,
DeclContext Owner,
const MultiLevelTemplateArgumentList TemplateArgs 
)
inline

Definition at line 586 of file Template.h.

Member Function Documentation

◆ adjustForRewrite()

void TemplateDeclInstantiator::adjustForRewrite ( RewriteKind  RK,
FunctionDecl Orig,
QualType T,
TypeSourceInfo *&  TInfo,
DeclarationNameInfo NameInfo 
)

◆ delayed_partial_spec_begin()

delayed_partial_spec_iterator clang::TemplateDeclInstantiator::delayed_partial_spec_begin ( )
inline

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 671 of file Template.h.

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

◆ delayed_partial_spec_end()

delayed_partial_spec_iterator clang::TemplateDeclInstantiator::delayed_partial_spec_end ( )
inline

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 683 of file Template.h.

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

◆ delayed_var_partial_spec_begin()

delayed_var_partial_spec_iterator clang::TemplateDeclInstantiator::delayed_var_partial_spec_begin ( )
inline

Definition at line 675 of file Template.h.

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

◆ delayed_var_partial_spec_end()

delayed_var_partial_spec_iterator clang::TemplateDeclInstantiator::delayed_var_partial_spec_end ( )
inline

Definition at line 687 of file Template.h.

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

◆ disableLateAttributeInstantiation()

void clang::TemplateDeclInstantiator::disableLateAttributeInstantiation ( )
inline

Definition at line 654 of file Template.h.

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

◆ enableLateAttributeInstantiation()

void clang::TemplateDeclInstantiator::enableLateAttributeInstantiation ( Sema::LateInstantiatedAttrVec LA)
inline

Definition at line 648 of file Template.h.

References clang::Sema::CurrentInstantiationScope.

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

◆ getEvaluateConstraints()

bool clang::TemplateDeclInstantiator::getEvaluateConstraints ( )
inline

Definition at line 595 of file Template.h.

◆ getStartingScope()

LocalInstantiationScope * clang::TemplateDeclInstantiator::getStartingScope ( ) const
inline

Definition at line 659 of file Template.h.

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

◆ InitFunctionInstantiation()

bool TemplateDeclInstantiator::InitFunctionInstantiation ( FunctionDecl New,
FunctionDecl Tmpl 
)

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 4753 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()

bool TemplateDeclInstantiator::InitMethodInstantiation ( CXXMethodDecl New,
CXXMethodDecl Tmpl 
)

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

Returns
true if there was an error

Definition at line 4839 of file SemaTemplateInstantiateDecl.cpp.

References clang::Sema::AdjustDestructorExceptionSpec(), clang::Decl::getAccess(), clang::Sema::getLangOpts(), InitFunctionInstantiation(), clang::FunctionDecl::isVirtualAsWritten(), clang::Decl::setAccess(), and clang::FunctionDecl::setVirtualAsWritten().

Referenced by VisitCXXMethodDecl().

◆ InstantiateClassTemplatePartialSpecialization()

ClassTemplatePartialSpecializationDecl * TemplateDeclInstantiator::InstantiateClassTemplatePartialSpecialization ( ClassTemplateDecl ClassTemplate,
ClassTemplatePartialSpecializationDecl PartialSpec 
)

Instantiate the declaration of a class template partial specialization.

Parameters
ClassTemplatethe (instantiated) class template that is partially
PartialSpecthe (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 4220 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::Sema::Diag(), clang::ClassTemplateDecl::findPartialSpecialization(), clang::TypeDecl::getBeginLoc(), clang::Decl::getLocation(), clang::TagDecl::getTagKind(), clang::ClassTemplatePartialSpecializationDecl::getTemplateArgsAsWritten(), clang::ClassTemplatePartialSpecializationDecl::getTemplateParameters(), clang::ASTContext::getTemplateSpecializationType(), clang::ASTContext::getTemplateSpecializationTypeInfo(), clang::TypeSourceInfo::getType(), clang::ASTContext::getTypeDeclType(), clang::ASTTemplateArgumentListInfo::LAngleLoc, clang::ASTTemplateArgumentListInfo::RAngleLoc, clang::ClassTemplatePartialSpecializationDecl::setInstantiatedFromMember(), clang::ClassTemplateSpecializationDecl::setTypeAsWritten(), clang::TemplateArgumentListInfo::size(), SubstQualifier(), clang::Sema::SubstTemplateArguments(), and SubstTemplateParams().

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

◆ InstantiateEnumDefinition()

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

◆ InstantiateTypedefNameDecl()

Decl * TemplateDeclInstantiator::InstantiateTypedefNameDecl ( TypedefNameDecl D,
bool  IsTypeAlias 
)

◆ InstantiateVarTemplatePartialSpecialization()

VarTemplatePartialSpecializationDecl * TemplateDeclInstantiator::InstantiateVarTemplatePartialSpecialization ( VarTemplateDecl VarTemplate,
VarTemplatePartialSpecializationDecl PartialSpec 
)

Instantiate the declaration of a variable template partial specialization.

Parameters
VarTemplatethe (instantiated) variable template that is partially specialized by the instantiation of PartialSpec.
PartialSpecthe (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 4345 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::Sema::Diag(), clang::VarTemplateDecl::findPartialSpecialization(), clang::NamedDecl::getDeclName(), clang::DeclaratorDecl::getInnerLocStart(), clang::Decl::getLocation(), clang::VarDecl::getStorageClass(), clang::VarTemplatePartialSpecializationDecl::getTemplateArgsAsWritten(), clang::VarTemplatePartialSpecializationDecl::getTemplateParameters(), clang::ASTContext::getTemplateSpecializationType(), clang::ASTContext::getTemplateSpecializationTypeInfo(), 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::setTypeAsWritten(), 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

Definition at line 592 of file Template.h.

Referenced by clang::Sema::InstantiateClass(), and clang::Sema::SubstTemplateParams().

◆ SubstDefaultedFunction()

bool TemplateDeclInstantiator::SubstDefaultedFunction ( FunctionDecl New,
FunctionDecl Tmpl 
)

◆ SubstFunctionType()

TypeSourceInfo * TemplateDeclInstantiator::SubstFunctionType ( FunctionDecl D,
SmallVectorImpl< ParmVarDecl * > &  Params 
)

◆ SubstQualifier() [1/2]

bool TemplateDeclInstantiator::SubstQualifier ( const DeclaratorDecl OldDecl,
DeclaratorDecl NewDecl 
)

◆ SubstQualifier() [2/2]

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

Definition at line 79 of file SemaTemplateInstantiateDecl.cpp.

◆ SubstTemplateParams()

TemplateParameterList * TemplateDeclInstantiator::SubstTemplateParams ( TemplateParameterList L)

◆ VisitBaseUsingDecls()

Decl * TemplateDeclInstantiator::VisitBaseUsingDecls ( BaseUsingDecl D,
BaseUsingDecl Inst,
LookupResult Lookup 
)

◆ VisitCXXMethodDecl()

Decl * TemplateDeclInstantiator::VisitCXXMethodDecl ( CXXMethodDecl D,
TemplateParameterList TemplateParams,
RewriteKind  RK = RewriteKind::None 
)

Definition at line 2450 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(), clang::ASTContext::DeclarationNames, clang::Sema::CodeSynthesisContext::DeducedTemplateArgumentSubstitution, clang::Sema::FindInstantiatedContext(), clang::Sema::FindInstantiatedDecl(), clang::FunctionTemplateDecl::findSpecialization(), clang::Decl::FOK_None, clang::Sema::ForExternalRedeclaration, clang::ActionResult< PtrTy, Compress >::get(), clang::Decl::getAccess(), clang::Stmt::getBeginLoc(), clang::ASTContext::getCanonicalType(), clang::FunctionDecl::getConstexprKind(), clang::DeclarationNameTable::getCXXDestructorName(), clang::Decl::getDeclContext(), clang::NamedDecl::getDeclName(), clang::FunctionDecl::getDependentSpecializationInfo(), clang::FunctionDecl::getDescribedFunctionTemplate(), clang::Decl::getEndLoc(), clang::Stmt::getEndLoc(), clang::Decl::getFriendObjectKind(), clang::ExplicitSpecifier::getFromDecl(), clang::DeclaratorDecl::getInnerLocStart(), clang::MultiLevelTemplateArgumentList::getInnermost(), clang::TemplateParameterList::getLAngleLoc(), clang::Decl::getLexicalDeclContext(), clang::Decl::getLocation(), clang::FunctionDecl::getNameInfo(), clang::DeclaratorDecl::getNumTemplateParameterLists(), clang::CXXMethodDecl::getParent(), clang::Redeclarable< decl_type >::getPreviousDecl(), clang::DeclaratorDecl::getQualifierLoc(), clang::TemplateParameterList::getRAngleLoc(), clang::TemplateParameterList::getRequiresClause(), clang::TemplateParameterList::getTemplateLoc(), clang::DeclaratorDecl::getTemplateParameterList(), clang::FunctionDecl::getTemplateSpecializationArgsAsWritten(), clang::DeclaratorDecl::getTrailingRequiresClause(), clang::ASTContext::getTrivialTypeSourceInfo(), clang::ValueDecl::getType(), clang::Expr::getType(), clang::ASTContext::getTypeDeclType(), clang::DeclaratorDecl::getTypeSourceInfo(), clang::Decl::hasAttr(), InitMethodInstantiation(), clang::Sema::instantiateExplicitSpecifier(), clang::CXXMethodDecl::isCopyAssignmentOperator(), clang::FunctionDecl::isDeletedAsWritten(), clang::FunctionDecl::isExplicitlyDefaulted(), clang::FunctionDecl::isInlined(), clang::FunctionDecl::isInlineSpecified(), clang::Decl::isInLocalScopeForInstantiation(), clang::Decl::isInvalidDecl(), clang::CXXMethodDecl::isMoveAssignmentOperator(), clang::FunctionDecl::isOutOfLine(), clang::FunctionDecl::isPureVirtual(), clang::CXXMethodDecl::isStatic(), clang::FunctionDecl::isThisDeclarationADefinition(), clang::ActionResult< PtrTy, Compress >::isUsable(), 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::DeclaratorDecl::setTypeSourceInfo(), clang::TemplateParameterList::size(), clang::Sema::SubstDeclarationNameInfo(), clang::Sema::SubstDefaultArgument(), SubstDefaultedFunction(), SubstFunctionType(), clang::Sema::SubstNestedNameSpecifierLoc(), clang::Sema::SubstTemplateArguments(), SubstTemplateParams(), clang::TSK_ImplicitInstantiation, clang::Unresolved, and clang::FunctionDecl::UsesFPIntrin().

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

◆ VisitDecl()

Decl * TemplateDeclInstantiator::VisitDecl ( Decl D)

Definition at line 4079 of file SemaTemplateInstantiateDecl.cpp.

◆ VisitFunctionDecl()

Decl * TemplateDeclInstantiator::VisitFunctionDecl ( FunctionDecl D,
TemplateParameterList TemplateParams,
RewriteKind  FunctionRewriteKind = RewriteKind::None 
)

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 2083 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, clang::Sema::FilterLookupForScope(), clang::Sema::FindInstantiatedContext(), clang::Sema::FindInstantiatedDecl(), clang::FunctionTemplateDecl::findSpecialization(), clang::Decl::FOK_None, clang::Sema::ForExternalRedeclaration, clang::Sema::forRedeclarationInCurContext(), clang::FunctionDecl::FriendConstraintRefersToEnclosingTemplate(), clang::Function, clang::ActionResult< PtrTy, Compress >::get(), clang::Decl::getAccess(), clang::Stmt::getBeginLoc(), clang::FunctionDecl::getCanonicalDecl(), clang::FunctionDecl::getConstexprKind(), clang::Decl::getDeclContext(), clang::FunctionDecl::getDependentSpecializationInfo(), clang::FunctionDecl::getDescribedFunctionTemplate(), clang::SourceRange::getEnd(), clang::Stmt::getEndLoc(), clang::Decl::getFriendObjectKind(), clang::DeclaratorDecl::getInnerLocStart(), clang::MultiLevelTemplateArgumentList::getInnermost(), clang::TemplateParameterList::getLAngleLoc(), clang::Decl::getLocation(), clang::FunctionDecl::getNameInfo(), clang::FunctionTemplateDecl::getPreviousDecl(), clang::DeclaratorDecl::getQualifierLoc(), clang::TemplateParameterList::getRAngleLoc(), clang::DeclContext::getRedeclContext(), clang::TemplateParameterList::getRequiresClause(), clang::FunctionDecl::getSourceRange(), clang::FunctionDecl::getStorageClass(), clang::TemplateParameterList::getTemplateLoc(), clang::TemplateDecl::getTemplateParameters(), clang::FunctionDecl::getTemplateSpecializationArgsAsWritten(), clang::DeclaratorDecl::getTrailingRequiresClause(), clang::Expr::getType(), clang::NestedNameSpecifierLoc::hasQualifier(), clang::FunctionDecl::hasWrittenPrototype(), clang::Decl::IDNS_Ordinary, InitFunctionInstantiation(), clang::Sema::instantiateExplicitSpecifier(), clang::FunctionDecl::isDeleted(), clang::FunctionDecl::isExplicitlyDefaulted(), clang::DeclContext::isFileContext(), clang::DeclContext::isFunctionOrMethod(), clang::Decl::isInIdentifierNamespace(), clang::FunctionDecl::isInlined(), clang::FunctionDecl::isInlineSpecified(), clang::ExplicitSpecifier::isInvalid(), clang::Decl::isLocalExternDecl(), clang::FunctionDecl::isOutOfLine(), clang::DeclContext::isRecord(), clang::FunctionDecl::isThisDeclarationADefinition(), clang::ActionResult< PtrTy, Compress >::isUsable(), 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::Sema::TPC_FriendFunctionTemplate, clang::Sema::TPC_FriendFunctionTemplateDefinition, clang::TSK_ImplicitInstantiation, and clang::FunctionDecl::UsesFPIntrin().

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

◆ VisitVarDecl()

Decl * TemplateDeclInstantiator::VisitVarDecl ( VarDecl D,
bool  InstantiatingVarTemplate,
ArrayRef< BindingDecl * > *  Bindings = nullptr 
)

Definition at line 1171 of file SemaTemplateInstantiateDecl.cpp.

References VisitVarDecl().

Referenced by VisitVarDecl().

◆ VisitVarTemplateSpecializationDecl()

Decl * TemplateDeclInstantiator::VisitVarTemplateSpecializationDecl ( VarTemplateDecl VarTemplate,
VarDecl FromVar,
const TemplateArgumentListInfo TemplateArgsInfo,
ArrayRef< TemplateArgument Converted,
VarTemplateSpecializationDecl PrevDecl = nullptr 
)

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