clang
3.7.0
|
Declaration of a template function. More...
#include <DeclTemplate.h>
Classes | |
struct | Common |
Data that is common to all of the declarations of a given function template. More... | |
Public Member Functions | |
void | LoadLazySpecializations () const |
Load any lazily-loaded specializations from the external source. More... | |
FunctionDecl * | getTemplatedDecl () const |
Get the underlying function declaration of the template. More... | |
bool | isThisDeclarationADefinition () const |
FunctionDecl * | findSpecialization (ArrayRef< TemplateArgument > Args, void *&InsertPos) |
Return the specialization with the provided arguments if it exists, otherwise return the insertion point. More... | |
FunctionTemplateDecl * | getCanonicalDecl () override |
Retrieves the canonical declaration of this template. More... | |
const FunctionTemplateDecl * | getCanonicalDecl () const |
FunctionTemplateDecl * | getPreviousDecl () |
Retrieve the previous declaration of this function template, or NULL if no such declaration exists. More... | |
const FunctionTemplateDecl * | getPreviousDecl () const |
Retrieve the previous declaration of this function template, or NULL if no such declaration exists. More... | |
FunctionTemplateDecl * | getMostRecentDecl () |
const FunctionTemplateDecl * | getMostRecentDecl () const |
FunctionTemplateDecl * | getInstantiatedFromMemberTemplate () |
spec_range | specializations () const |
spec_iterator | spec_begin () const |
spec_iterator | spec_end () const |
ArrayRef< TemplateArgument > | getInjectedTemplateArgs () |
Retrieve the "injected" template arguments that correspond to the template parameters of this function template. More... | |
![]() | |
const RedeclarableTemplateDecl * | getCanonicalDecl () const |
bool | isMemberSpecialization () const |
Determines whether this template was a specialization of a member template. More... | |
void | setMemberSpecialization () |
Note that this member template is a specialization. More... | |
RedeclarableTemplateDecl * | getInstantiatedFromMemberTemplate () const |
Retrieve the member template from which this template was instantiated, or NULL if this template was not instantiated from a member template. More... | |
void | setInstantiatedFromMemberTemplate (RedeclarableTemplateDecl *TD) |
![]() | |
TemplateParameterList * | getTemplateParameters () const |
Get the list of template parameters. More... | |
NamedDecl * | getTemplatedDecl () const |
Get the underlying, templated declaration. More... | |
SourceRange | getSourceRange () const override LLVM_READONLY |
Source range that this declaration covers. More... | |
void | init (NamedDecl *templatedDecl, TemplateParameterList *templateParams) |
Initialize the underlying templated declaration and template parameters. More... | |
![]() | |
IdentifierInfo * | getIdentifier () const |
StringRef | getName () const |
std::string | getNameAsString () const |
void | printName (raw_ostream &os) const |
DeclarationName | getDeclName () const |
void | setDeclName (DeclarationName N) |
Set the name of this declaration. More... | |
void | printQualifiedName (raw_ostream &OS) const |
void | printQualifiedName (raw_ostream &OS, const PrintingPolicy &Policy) const |
std::string | getQualifiedNameAsString () const |
virtual void | getNameForDiagnostic (raw_ostream &OS, const PrintingPolicy &Policy, bool Qualified) const |
bool | declarationReplaces (NamedDecl *OldD, bool IsKnownNewer=true) const |
Determine whether this declaration, if known to be well-formed within its context, will replace the declaration OldD if introduced into scope. A declaration will replace another declaration if, for example, it is a redeclaration of the same variable or function, but not if it is a declaration of a different kind (function vs. class) or an overloaded function. More... | |
bool | hasLinkage () const |
Determine whether this declaration has linkage. More... | |
bool | isHidden () const |
Determine whether this declaration is hidden from name lookup. More... | |
void | setHidden (bool Hide) |
Set whether this declaration is hidden from name lookup. More... | |
bool | isCXXClassMember () const |
Determine whether this declaration is a C++ class member. More... | |
bool | isCXXInstanceMember () const |
Determine whether the given declaration is an instance member of a C++ class. More... | |
Linkage | getLinkageInternal () const |
Determine what kind of linkage this entity has. This is not the linkage as defined by the standard or the codegen notion of linkage. It is just an implementation detail that is used to compute those. More... | |
Linkage | getFormalLinkage () const |
Get the linkage from a semantic point of view. Entities in anonymous namespaces are external (in c++98). More... | |
bool | hasExternalFormalLinkage () const |
True if this decl has external linkage. More... | |
bool | isExternallyVisible () const |
Visibility | getVisibility () const |
Determines the visibility of this entity. More... | |
LinkageInfo | getLinkageAndVisibility () const |
Determines the linkage and visibility of this entity. More... | |
Optional< Visibility > | getExplicitVisibility (ExplicitVisibilityKind kind) const |
If visibility was explicitly specified for this declaration, return that visibility. More... | |
bool | isLinkageValid () const |
True if the computed linkage is valid. Used for consistency checking. Should always return true. More... | |
bool | hasLinkageBeenComputed () const |
True if something has required us to compute the linkage of this declaration. More... | |
NamedDecl * | getUnderlyingDecl () |
Looks through UsingDecls and ObjCCompatibleAliasDecls for the underlying named decl. More... | |
const NamedDecl * | getUnderlyingDecl () const |
NamedDecl * | getMostRecentDecl () |
const NamedDecl * | getMostRecentDecl () const |
ObjCStringFormatFamily | getObjCFStringFormattingFamily () const |
![]() | |
SourceLocation | getLocStart () const LLVM_READONLY |
SourceLocation | getLocEnd () const LLVM_READONLY |
SourceLocation | getLocation () const |
void | setLocation (SourceLocation L) |
Kind | getKind () const |
const char * | getDeclKindName () const |
Decl * | getNextDeclInContext () |
const Decl * | getNextDeclInContext () const |
DeclContext * | getDeclContext () |
const DeclContext * | getDeclContext () const |
Decl * | getNonClosureContext () |
const Decl * | getNonClosureContext () const |
TranslationUnitDecl * | getTranslationUnitDecl () |
const TranslationUnitDecl * | getTranslationUnitDecl () const |
bool | isInAnonymousNamespace () const |
bool | isInStdNamespace () const |
ASTContext & | getASTContext () const LLVM_READONLY |
void | setAccess (AccessSpecifier AS) |
AccessSpecifier | getAccess () const |
AccessSpecifier | getAccessUnsafe () const |
Retrieve the access specifier for this declaration, even though it may not yet have been properly set. More... | |
bool | hasAttrs () const |
void | setAttrs (const AttrVec &Attrs) |
AttrVec & | getAttrs () |
const AttrVec & | getAttrs () const |
void | dropAttrs () |
void | addAttr (Attr *A) |
attr_range | attrs () const |
attr_iterator | attr_begin () const |
attr_iterator | attr_end () const |
template<typename T > | |
void | dropAttr () |
template<typename T > | |
llvm::iterator_range < specific_attr_iterator< T > > | specific_attrs () const |
template<typename T > | |
specific_attr_iterator< T > | specific_attr_begin () const |
template<typename T > | |
specific_attr_iterator< T > | specific_attr_end () const |
template<typename T > | |
T * | getAttr () const |
template<typename T > | |
bool | hasAttr () const |
unsigned | getMaxAlignment () const |
void | setInvalidDecl (bool Invalid=true) |
bool | isInvalidDecl () const |
bool | isImplicit () const |
void | setImplicit (bool I=true) |
bool | isUsed (bool CheckUsedAttr=true) const |
Whether this declaration was used, meaning that a definition is required. More... | |
void | setIsUsed () |
Set whether the declaration is used, in the sense of odr-use. More... | |
void | markUsed (ASTContext &C) |
Mark the declaration used, in the sense of odr-use. More... | |
bool | isReferenced () const |
Whether any declaration of this entity was referenced. More... | |
bool | isThisDeclarationReferenced () const |
Whether this declaration was referenced. This should not be relied upon for anything other than debugging. More... | |
void | setReferenced (bool R=true) |
bool | isTopLevelDeclInObjCContainer () const |
Whether this declaration is a top-level declaration (function, global variable, etc.) that is lexically inside an objc container definition. More... | |
void | setTopLevelDeclInObjCContainer (bool V=true) |
bool | isModulePrivate () const |
Whether this declaration was marked as being private to the module in which it was defined. More... | |
AvailabilityResult | getAvailability (std::string *Message=nullptr) const |
Determine the availability of the given declaration. More... | |
bool | isDeprecated (std::string *Message=nullptr) const |
Determine whether this declaration is marked 'deprecated'. More... | |
bool | isUnavailable (std::string *Message=nullptr) const |
Determine whether this declaration is marked 'unavailable'. More... | |
bool | isWeakImported () const |
Determine whether this is a weak-imported symbol. More... | |
bool | canBeWeakImported (bool &IsDefinition) const |
Determines whether this symbol can be weak-imported, e.g., whether it would be well-formed to add the weak_import attribute. More... | |
bool | isFromASTFile () const |
Determine whether this declaration came from an AST file (such as a precompiled header or module) rather than having been parsed. More... | |
unsigned | getGlobalID () const |
Retrieve the global declaration ID associated with this declaration, which specifies where in the. More... | |
unsigned | getOwningModuleID () const |
Retrieve the global ID of the module that owns this particular declaration. More... | |
Module * | getImportedOwningModule () const |
Get the imported owning module, if this decl is from an imported (non-local) module. More... | |
Module * | getLocalOwningModule () const |
Get the local owning module, if known. Returns nullptr if owner is not yet known or declaration is not from a module. More... | |
void | setLocalOwningModule (Module *M) |
unsigned | getIdentifierNamespace () const |
bool | isInIdentifierNamespace (unsigned NS) const |
bool | hasTagIdentifierNamespace () const |
DeclContext * | getLexicalDeclContext () |
const DeclContext * | getLexicalDeclContext () const |
virtual bool | isOutOfLine () const |
void | setDeclContext (DeclContext *DC) |
void | setLexicalDeclContext (DeclContext *DC) |
bool | isDefinedOutsideFunctionOrMethod () const |
const DeclContext * | getParentFunctionOrMethod () const |
If this decl is defined inside a function/method/block it returns the corresponding DeclContext, otherwise it returns null. More... | |
DeclContext * | getParentFunctionOrMethod () |
const Decl * | getCanonicalDecl () const |
bool | isCanonicalDecl () const |
Whether this particular Decl is a canonical one. More... | |
redecl_range | redecls () const |
Returns an iterator range for all the redeclarations of the same decl. It will iterate at least once (when this decl is the only one). More... | |
redecl_iterator | redecls_begin () const |
redecl_iterator | redecls_end () const |
Decl * | getPreviousDecl () |
Retrieve the previous declaration that declares the same entity as this declaration, or NULL if there is no previous declaration. More... | |
const Decl * | getPreviousDecl () const |
Retrieve the most recent declaration that declares the same entity as this declaration, or NULL if there is no previous declaration. More... | |
bool | isFirstDecl () const |
True if this is the first declaration in its redeclaration chain. More... | |
Decl * | getMostRecentDecl () |
Retrieve the most recent declaration that declares the same entity as this declaration (which may be this declaration). More... | |
const Decl * | getMostRecentDecl () const |
Retrieve the most recent declaration that declares the same entity as this declaration (which may be this declaration). More... | |
virtual Stmt * | getBody () const |
virtual bool | hasBody () const |
Returns true if this Decl represents a declaration for a body of code, such as a function or method definition. Note that hasBody can also return true if any redeclaration of this Decl represents a declaration for a body of code. More... | |
SourceLocation | getBodyRBrace () const |
bool | isTemplateParameter () const |
bool | isTemplateParameterPack () const |
bool | isParameterPack () const |
Whether this declaration is a parameter pack. More... | |
bool | isTemplateDecl () const |
returns true if this declaration is a template More... | |
bool | isFunctionOrFunctionTemplate () const |
Whether this declaration is a function or function template. More... | |
FunctionDecl * | getAsFunction () LLVM_READONLY |
Returns the function itself, or the templated function if this is a function template. More... | |
const FunctionDecl * | getAsFunction () const |
void | setLocalExternDecl () |
Changes the namespace of this declaration to reflect that it's a function-local extern declaration. More... | |
bool | isLocalExternDecl () |
Determine whether this is a block-scope declaration with linkage. This will either be a local variable declaration declared 'extern', or a local function declaration. More... | |
void | setObjectOfFriendDecl (bool PerformFriendInjection=false) |
Changes the namespace of this declaration to reflect that it's the object of a friend declaration. More... | |
FriendObjectKind | getFriendObjectKind () const |
Determines whether this declaration is the object of a friend declaration and, if so, what kind. More... | |
void | setNonMemberOperator () |
Specifies that this declaration is a C++ overloaded non-member. More... | |
void | print (raw_ostream &Out, unsigned Indentation=0, bool PrintInstantiation=false) const |
void | print (raw_ostream &Out, const PrintingPolicy &Policy, unsigned Indentation=0, bool PrintInstantiation=false) const |
void | dump () const |
void | dumpColor () const |
void | dump (raw_ostream &Out) const |
const FunctionType * | getFunctionType (bool BlocksToo=true) const |
Looks through the Decl's underlying type to extract a FunctionType when possible. Will return null if the type underlying the Decl does not have a FunctionType. More... | |
![]() | |
Redeclarable (const ASTContext &Ctx) | |
RedeclarableTemplateDecl * | getPreviousDecl () |
Return the previous declaration of this declaration or NULL if this is the first declaration. More... | |
const RedeclarableTemplateDecl * | getPreviousDecl () const |
RedeclarableTemplateDecl * | getFirstDecl () |
Return the first declaration of this declaration or itself if this is the only declaration. More... | |
const RedeclarableTemplateDecl * | getFirstDecl () const |
Return the first declaration of this declaration or itself if this is the only declaration. More... | |
bool | isFirstDecl () const |
True if this is the first declaration in its redeclaration chain. More... | |
RedeclarableTemplateDecl * | getMostRecentDecl () |
Returns the most recent (re)declaration of this declaration. More... | |
const RedeclarableTemplateDecl * | getMostRecentDecl () const |
Returns the most recent (re)declaration of this declaration. More... | |
void | setPreviousDecl (RedeclarableTemplateDecl *PrevDecl) |
Set the previous declaration. If PrevDecl is NULL, set this as the first and only declaration. More... | |
redecl_range | redecls () const |
Returns an iterator range for all the redeclarations of the same decl. It will iterate at least once (when this decl is the only one). More... | |
redecl_iterator | redecls_begin () const |
redecl_iterator | redecls_end () const |
Static Public Member Functions | |
static FunctionTemplateDecl * | Create (ASTContext &C, DeclContext *DC, SourceLocation L, DeclarationName Name, TemplateParameterList *Params, NamedDecl *Decl) |
Create a function template node. More... | |
static FunctionTemplateDecl * | CreateDeserialized (ASTContext &C, unsigned ID) |
Create an empty function template node. More... | |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
![]() | |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
![]() | |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
![]() | |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
![]() | |
static unsigned | getIdentifierNamespaceForKind (Kind DK) |
static bool | isTagIdentifierNamespace (unsigned NS) |
static void | add (Kind k) |
static void | EnableStatistics () |
static void | PrintStats () |
static bool | classofKind (Kind K) |
static DeclContext * | castToDeclContext (const Decl *) |
static Decl * | castFromDeclContext (const DeclContext *) |
static void | printGroup (Decl **Begin, unsigned NumDecls, raw_ostream &Out, const PrintingPolicy &Policy, unsigned Indentation=0) |
Protected Member Functions | |
FunctionTemplateDecl (ASTContext &C, DeclContext *DC, SourceLocation L, DeclarationName Name, TemplateParameterList *Params, NamedDecl *Decl) | |
CommonBase * | newCommon (ASTContext &C) const override |
Common * | getCommonPtr () const |
llvm::FoldingSetVector < FunctionTemplateSpecializationInfo > & | getSpecializations () const |
Retrieve the set of function template specializations of this function template. More... | |
void | addSpecialization (FunctionTemplateSpecializationInfo *Info, void *InsertPos) |
Add a specialization of this function template. More... | |
![]() | |
template<class EntryType > | |
SpecEntryTraits< EntryType > ::DeclType * | findSpecializationImpl (llvm::FoldingSetVector< EntryType > &Specs, ArrayRef< TemplateArgument > Args, void *&InsertPos) |
template<class Derived , class EntryType > | |
void | addSpecializationImpl (llvm::FoldingSetVector< EntryType > &Specs, EntryType *Entry, void *InsertPos) |
CommonBase * | getCommonPtr () const |
Retrieves the "common" pointer shared by all (re-)declarations of the same template. Calling this routine may implicitly allocate memory for the common pointer. More... | |
RedeclarableTemplateDecl (Kind DK, ASTContext &C, DeclContext *DC, SourceLocation L, DeclarationName Name, TemplateParameterList *Params, NamedDecl *Decl) | |
![]() | |
TemplateDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName Name) | |
TemplateDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName Name, TemplateParameterList *Params) | |
TemplateDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName Name, TemplateParameterList *Params, NamedDecl *Decl) | |
![]() | |
NamedDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName N) | |
![]() | |
void * | operator new (std::size_t Size, const ASTContext &Ctx, unsigned ID, std::size_t Extra=0) |
Allocate memory for a deserialized declaration. More... | |
void * | operator new (std::size_t Size, const ASTContext &Ctx, DeclContext *Parent, std::size_t Extra=0) |
Allocate memory for a non-deserialized declaration. More... | |
Decl (Kind DK, DeclContext *DC, SourceLocation L) | |
Decl (Kind DK, EmptyShell Empty) | |
virtual | ~Decl () |
void | updateOutOfDate (IdentifierInfo &II) const |
Update a potentially out-of-date declaration. More... | |
Linkage | getCachedLinkage () const |
void | setCachedLinkage (Linkage L) const |
bool | hasCachedLinkage () const |
void | setModulePrivate (bool MP=true) |
Specify whether this declaration was marked as being private to the module in which it was defined. More... | |
void | setOwningModuleID (unsigned ID) |
Set the owning module ID. More... | |
bool | hasLocalOwningModuleStorage () const |
ASTMutationListener * | getASTMutationListener () const |
![]() | |
RedeclarableTemplateDecl * | getNextRedeclaration () const |
Friends | |
class | FunctionDecl |
class | ASTDeclReader |
class | ASTDeclWriter |
Additional Inherited Members | |
![]() | |
enum | { TopLevelDeclInObjCContainerFlag = 0x01, ModulePrivateFlag = 0x02 } |
![]() | |
template<typename EntryType > | |
static SpecIterator< EntryType > | makeSpecIterator (llvm::FoldingSetVector< EntryType > &Specs, bool isEnd) |
![]() | |
static DeclLink | PreviousDeclLink (RedeclarableTemplateDecl *D) |
static DeclLink | LatestDeclLink (const ASTContext &Ctx) |
![]() | |
CommonBase * | Common |
Pointer to the common data shared by all declarations of this template. More... | |
![]() | |
NamedDecl * | TemplatedDecl |
TemplateParameterList * | TemplateParams |
![]() | |
llvm::PointerIntPair< Decl *, 2, unsigned > | NextInContextAndBits |
The next declaration within the same lexical DeclContext. These pointers form the linked list that is traversed via DeclContext's decls_begin()/decls_end(). More... | |
unsigned | Access: 2 |
Access - Used by C++ decls for the access specifier. More... | |
unsigned | FromASTFile: 1 |
Whether this declaration was loaded from an AST file. More... | |
unsigned | Hidden: 1 |
Whether this declaration is hidden from normal name lookup, e.g., because it is was loaded from an AST file is either module-private or because its submodule has not been made visible. More... | |
unsigned | IdentifierNamespace: 12 |
IdentifierNamespace - This specifies what IDNS_* namespace this lives in. More... | |
unsigned | CacheValidAndLinkage: 3 |
If 0, we have not computed the linkage of this declaration. Otherwise, it is the linkage + 1. More... | |
![]() | |
DeclLink | RedeclLink |
Points to the next redeclaration in the chain. More... | |
RedeclarableTemplateDecl * | First |
Declaration of a template function.
Definition at line 821 of file DeclTemplate.h.
Definition at line 934 of file DeclTemplate.h.
typedef llvm::iterator_range<spec_iterator> clang::FunctionTemplateDecl::spec_range |
Definition at line 935 of file DeclTemplate.h.
|
inlineprotected |
Definition at line 851 of file DeclTemplate.h.
Referenced by Create(), and CreateDeserialized().
|
protected |
Add a specialization of this function template.
InsertPos | Insert position in the FoldingSetVector, must have been retrieved by an earlier call to findSpecialization(). |
Definition at line 307 of file DeclTemplate.cpp.
References getSpecializations().
Definition at line 968 of file DeclTemplate.h.
References clang::Decl::getKind().
Definition at line 969 of file DeclTemplate.h.
|
static |
Create a function template node.
Definition at line 257 of file DeclTemplate.cpp.
References AdoptTemplateParameterList(), AttributeLangSupport::C, and FunctionTemplateDecl().
Referenced by clang::Sema::ActOnFunctionDeclarator(), addFunctionPointerConversion(), clang::Sema::startLambdaDefinition(), clang::TemplateDeclInstantiator::VisitCXXMethodDecl(), and clang::TemplateDeclInstantiator::VisitFunctionDecl().
|
static |
Create an empty function template node.
Definition at line 267 of file DeclTemplate.cpp.
References AttributeLangSupport::C, and FunctionTemplateDecl().
FunctionDecl * FunctionTemplateDecl::findSpecialization | ( | ArrayRef< TemplateArgument > | Args, |
void *& | InsertPos | ||
) |
Return the specialization with the provided arguments if it exists, otherwise return the insertion point.
Definition at line 302 of file DeclTemplate.cpp.
References clang::RedeclarableTemplateDecl::findSpecializationImpl(), and getSpecializations().
Referenced by clang::Sema::DefineImplicitLambdaToFunctionPointerConversion(), clang::CodeGen::CodeGenFunction::EmitLambdaDelegatingInvokeBody(), clang::TemplateDeclInstantiator::VisitCXXMethodDecl(), and clang::TemplateDeclInstantiator::VisitFunctionDecl().
|
inlineoverridevirtual |
Retrieves the canonical declaration of this template.
Reimplemented from clang::RedeclarableTemplateDecl.
Definition at line 897 of file DeclTemplate.h.
References clang::RedeclarableTemplateDecl::getCanonicalDecl().
Referenced by clang::ASTWriter::AddedCXXTemplateSpecialization(), clang::Sema::FinishTemplateArgumentDeduction(), isInstantiationOf(), MatchesFriend(), and clang::ASTDeclWriter::VisitFunctionDecl().
|
inline |
Definition at line 901 of file DeclTemplate.h.
References clang::RedeclarableTemplateDecl::getCanonicalDecl().
|
inlineprotected |
Definition at line 859 of file DeclTemplate.h.
References clang::RedeclarableTemplateDecl::getCommonPtr().
Referenced by getInjectedTemplateArgs(), getSpecializations(), LoadLazySpecializations(), clang::ASTDeclReader::VisitFunctionDecl(), and clang::ASTDeclReader::VisitFunctionTemplateDecl().
ArrayRef< TemplateArgument > FunctionTemplateDecl::getInjectedTemplateArgs | ( | ) |
Retrieve the "injected" template arguments that correspond to the template parameters of this function template.
Although the C++ standard has no notion of the "injected" template arguments for a function template, the notion is convenient when we need to perform substitutions inside the definition of a function template.
Definition at line 313 of file DeclTemplate.cpp.
References GenerateInjectedTemplateArgs(), clang::Decl::getASTContext(), getCommonPtr(), clang::TemplateDecl::getTemplateParameters(), clang::FunctionTemplateDecl::Common::InjectedArgs, and clang::TemplateParameterList::size().
|
inline |
Definition at line 929 of file DeclTemplate.h.
References clang::RedeclarableTemplateDecl::getInstantiatedFromMemberTemplate().
Referenced by clang::Sema::CheckFunctionDeclaration(), and isInstantiationOf().
|
inline |
Definition at line 920 of file DeclTemplate.h.
Referenced by LoadLazySpecializations().
|
inline |
Definition at line 925 of file DeclTemplate.h.
|
inline |
Retrieve the previous declaration of this function template, or NULL if no such declaration exists.
Definition at line 908 of file DeclTemplate.h.
Referenced by clang::Sema::ActOnFunctionDeclarator().
|
inline |
Retrieve the previous declaration of this function template, or NULL if no such declaration exists.
Definition at line 915 of file DeclTemplate.h.
|
protected |
Retrieve the set of function template specializations of this function template.
Definition at line 296 of file DeclTemplate.cpp.
References getCommonPtr(), LoadLazySpecializations(), and clang::FunctionTemplateDecl::Common::Specializations.
Referenced by addSpecialization(), and findSpecialization().
|
inline |
Get the underlying function declaration of the template.
Definition at line 882 of file DeclTemplate.h.
Referenced by clang::Sema::ActOnExplicitInstantiation(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::AddFunctionCandidates(), clang::Sema::AddMethodTemplateCandidate(), clang::Sema::AddTemplateConversionCandidate(), clang::Sema::AddTemplateOverloadCandidate(), clang::Sema::CheckFunctionDeclaration(), collectViableConversionCandidates(), clang::Sema::DeduceTemplateArguments(), clang::Sema::DiagnoseEmptyLookup(), clang::comments::DeclInfo::fill(), FindConversionForRefInit(), clang::Sema::FinishTemplateArgumentDeduction(), clang::FunctionDecl::getTemplateInstantiationPattern(), isAtLeastAsSpecializedAs(), IsInitializerListConstructorConversion(), clang::CXXMethodDecl::isLambdaStaticInvoker(), IsUserDefinedConversion(), isVariadicFunctionTemplate(), LookupCopyAndMoveConstructors(), LookupDirect(), clang::Sema::MarkDeducedTemplateParameters(), MightInstantiateTo(), clang::Sema::PerformContextualImplicitConversion(), ResolveConstructorOverload(), clang::Sema::ResolveSingleFunctionTemplateSpecialization(), clang::Sema::SubstituteExplicitTemplateArguments(), TryRefInitWithConversionFunction(), and TryUserDefinedConversion().
|
inline |
Returns whether this template declaration defines the primary pattern.
Definition at line 888 of file DeclTemplate.h.
void FunctionTemplateDecl::LoadLazySpecializations | ( | ) | const |
Load any lazily-loaded specializations from the external source.
Definition at line 280 of file DeclTemplate.cpp.
References Context, clang::Decl::getASTContext(), getCommonPtr(), clang::ExternalASTSource::GetExternalDecl(), clang::ASTContext::getExternalSource(), getMostRecentDecl(), and clang::FunctionTemplateDecl::Common::LazySpecializations.
Referenced by getSpecializations().
|
overrideprotectedvirtual |
Implements clang::RedeclarableTemplateDecl.
Definition at line 274 of file DeclTemplate.cpp.
References clang::ASTContext::AddDeallocation(), and AttributeLangSupport::C.
|
inline |
Definition at line 940 of file DeclTemplate.h.
|
inline |
Definition at line 944 of file DeclTemplate.h.
|
inline |
Definition at line 937 of file DeclTemplate.h.
|
friend |
Definition at line 971 of file DeclTemplate.h.
|
friend |
Definition at line 972 of file DeclTemplate.h.
|
friend |
Definition at line 863 of file DeclTemplate.h.