class FunctionTemplateSpecializationInfo
Declaration
class FunctionTemplateSpecializationInfo : public Node,
private TrailingObjects { /* full declaration omitted */ };
Description
Provides information about a function template specialization, which is a FunctionDecl that has been explicitly specialization or instantiated from a function template.
Declared at: clang/include/clang/AST/DeclTemplate.h:477
Inherits from: FoldingSetBase::Node, TrailingObjects
Member Variables
- private llvm::PointerIntPair<FunctionDecl*, 1, bool> Function
- The function template specialization that this structure describes and a flag indicating if the function is a member specialization.
- private llvm::PointerIntPair<FunctionTemplateDecl*, 2> Template
- The two bits contain the top 4 values of TemplateSpecializationKind.
- public const clang::TemplateArgumentList* TemplateArguments
- The template arguments used to produce the function template specialization from the function template.
- public const clang::ASTTemplateArgumentListInfo* TemplateArgumentsAsWritten
- The template arguments as written in the sources, if provided. FIXME: Normally null; tail-allocate this.
- public clang::SourceLocation PointOfInstantiation
- The point at which this function template specialization was first instantiated.
Method Overview
- public static clang::FunctionTemplateSpecializationInfo * Create(clang::ASTContext & C, clang::FunctionDecl * FD, clang::FunctionTemplateDecl * Template, clang::TemplateSpecializationKind TSK, const clang::TemplateArgumentList * TemplateArgs, const clang::TemplateArgumentListInfo * TemplateArgsAsWritten, clang::SourceLocation POI, clang::MemberSpecializationInfo * MSInfo)
- private FunctionTemplateSpecializationInfo(clang::FunctionDecl * FD, clang::FunctionTemplateDecl * Template, clang::TemplateSpecializationKind TSK, const clang::TemplateArgumentList * TemplateArgs, const clang::ASTTemplateArgumentListInfo * TemplateArgsAsWritten, clang::SourceLocation POI, clang::MemberSpecializationInfo * MSInfo)
- public void Profile(llvm::FoldingSetNodeID & ID)
- public static void Profile(llvm::FoldingSetNodeID & ID, ArrayRef<clang::TemplateArgument> TemplateArgs, clang::ASTContext & Context)
- public clang::FunctionDecl * getFunction() const
- public clang::MemberSpecializationInfo * getMemberSpecializationInfo() const
- public clang::SourceLocation getPointOfInstantiation() const
- public clang::FunctionTemplateDecl * getTemplate() const
- public clang::TemplateSpecializationKind getTemplateSpecializationKind() const
- public bool isExplicitInstantiationOrSpecialization() const
- public bool isExplicitSpecialization() const
- private size_t numTrailingObjects(OverloadToken<clang::MemberSpecializationInfo *>) const
- public void setPointOfInstantiation(clang::SourceLocation POI)
- public void setTemplateSpecializationKind(clang::TemplateSpecializationKind TSK)
Inherited from FoldingSetBase::Node:
Methods
¶static clang::FunctionTemplateSpecializationInfo*
Create(clang::ASTContext& C,
clang::FunctionDecl* FD,
clang::FunctionTemplateDecl* Template,
clang::TemplateSpecializationKind TSK,
const clang::TemplateArgumentList*
TemplateArgs,
const clang::TemplateArgumentListInfo*
TemplateArgsAsWritten,
clang::SourceLocation POI,
clang::MemberSpecializationInfo* MSInfo)
static clang::FunctionTemplateSpecializationInfo*
Create(clang::ASTContext& C,
clang::FunctionDecl* FD,
clang::FunctionTemplateDecl* Template,
clang::TemplateSpecializationKind TSK,
const clang::TemplateArgumentList*
TemplateArgs,
const clang::TemplateArgumentListInfo*
TemplateArgsAsWritten,
clang::SourceLocation POI,
clang::MemberSpecializationInfo* MSInfo)
Declared at: clang/include/clang/AST/DeclTemplate.h:526
Parameters
- clang::ASTContext& C
- clang::FunctionDecl* FD
- clang::FunctionTemplateDecl* Template
- clang::TemplateSpecializationKind TSK
- const clang::TemplateArgumentList* TemplateArgs
- const clang::TemplateArgumentListInfo* TemplateArgsAsWritten
- clang::SourceLocation POI
- clang::MemberSpecializationInfo* MSInfo
¶FunctionTemplateSpecializationInfo(
clang::FunctionDecl* FD,
clang::FunctionTemplateDecl* Template,
clang::TemplateSpecializationKind TSK,
const clang::TemplateArgumentList*
TemplateArgs,
const clang::ASTTemplateArgumentListInfo*
TemplateArgsAsWritten,
clang::SourceLocation POI,
clang::MemberSpecializationInfo* MSInfo)
FunctionTemplateSpecializationInfo(
clang::FunctionDecl* FD,
clang::FunctionTemplateDecl* Template,
clang::TemplateSpecializationKind TSK,
const clang::TemplateArgumentList*
TemplateArgs,
const clang::ASTTemplateArgumentListInfo*
TemplateArgsAsWritten,
clang::SourceLocation POI,
clang::MemberSpecializationInfo* MSInfo)
Declared at: clang/include/clang/AST/DeclTemplate.h:505
Parameters
- clang::FunctionDecl* FD
- clang::FunctionTemplateDecl* Template
- clang::TemplateSpecializationKind TSK
- const clang::TemplateArgumentList* TemplateArgs
- const clang::ASTTemplateArgumentListInfo* TemplateArgsAsWritten
- clang::SourceLocation POI
- clang::MemberSpecializationInfo* MSInfo
¶void Profile(llvm::FoldingSetNodeID& ID)
void Profile(llvm::FoldingSetNodeID& ID)
Declared at: clang/include/clang/AST/DeclTemplate.h:613
Parameters
¶static void Profile(
llvm::FoldingSetNodeID& ID,
ArrayRef<clang::TemplateArgument>
TemplateArgs,
clang::ASTContext& Context)
static void Profile(
llvm::FoldingSetNodeID& ID,
ArrayRef<clang::TemplateArgument>
TemplateArgs,
clang::ASTContext& Context)
Declared at: clang/include/clang/AST/DeclTemplate.h:618
Parameters
- llvm::FoldingSetNodeID& ID
- ArrayRef<clang::TemplateArgument> TemplateArgs
- clang::ASTContext& Context
¶clang::FunctionDecl* getFunction() const
clang::FunctionDecl* getFunction() const
Description
Retrieve the declaration of the function template specialization.
Declared at: clang/include/clang/AST/DeclTemplate.h:533
¶clang::MemberSpecializationInfo*
getMemberSpecializationInfo() const
clang::MemberSpecializationInfo*
getMemberSpecializationInfo() const
Description
Get the specialization info if this function template specialization is also a member specialization: Here, A <int >::f <int > is a function template specialization that is an explicit specialization of A <int >::f, but it's also a member specialization (an implicit instantiation in this case) of A::f <int >. Further: ... declares a function template specialization that is an explicit specialization of A <int >::f, and is also an explicit member specialization of A::f <int >. Note that the TemplateSpecializationKind of the MemberSpecializationInfo need not be the same as that returned by getTemplateSpecializationKind(), and represents the relationship between the function and the class-scope explicit specialization in the original templated class -- whereas our TemplateSpecializationKind represents the relationship between the function and the function template, and should always be TSK_ExplicitSpecialization whenever we have MemberSpecializationInfo.
Declared at: clang/include/clang/AST/DeclTemplate.h:607
¶clang::SourceLocation getPointOfInstantiation()
const
clang::SourceLocation getPointOfInstantiation()
const
Description
Retrieve the first point of instantiation of this function template specialization. The point of instantiation may be an invalid source location if this function has yet to be instantiated.
Declared at: clang/include/clang/AST/DeclTemplate.h:567
¶clang::FunctionTemplateDecl* getTemplate() const
clang::FunctionTemplateDecl* getTemplate() const
Description
Retrieve the template from which this function was specialized.
Declared at: clang/include/clang/AST/DeclTemplate.h:536
¶clang::TemplateSpecializationKind
getTemplateSpecializationKind() const
clang::TemplateSpecializationKind
getTemplateSpecializationKind() const
Description
Determine what kind of template specialization this is.
Declared at: clang/include/clang/AST/DeclTemplate.h:539
¶bool isExplicitInstantiationOrSpecialization()
const
bool isExplicitInstantiationOrSpecialization()
const
Description
True if this declaration is an explicit specialization, explicit instantiation declaration, or explicit instantiation definition.
Declared at: clang/include/clang/AST/DeclTemplate.h:550
¶bool isExplicitSpecialization() const
bool isExplicitSpecialization() const
Declared at: clang/include/clang/AST/DeclTemplate.h:543
¶size_t numTrailingObjects(
OverloadToken<
clang::MemberSpecializationInfo*>) const
size_t numTrailingObjects(
OverloadToken<
clang::MemberSpecializationInfo*>) const
Declared at: clang/include/clang/AST/DeclTemplate.h:518
Parameters
- OverloadToken<clang::MemberSpecializationInfo*>
¶void setPointOfInstantiation(
clang::SourceLocation POI)
void setPointOfInstantiation(
clang::SourceLocation POI)
Description
Set the (first) point of instantiation of this function template specialization.
Declared at: clang/include/clang/AST/DeclTemplate.h:573
Parameters
¶void setTemplateSpecializationKind(
clang::TemplateSpecializationKind TSK)
void setTemplateSpecializationKind(
clang::TemplateSpecializationKind TSK)
Description
Set the template specialization kind.
Declared at: clang/include/clang/AST/DeclTemplate.h:556
Parameters
- clang::TemplateSpecializationKind TSK