clang API Documentation
A template instantiation that is currently in progress. More...
#include <Sema.h>
Public Types | |
enum | InstantiationKind { TemplateInstantiation, DefaultTemplateArgumentInstantiation, DefaultFunctionArgumentInstantiation, ExplicitTemplateArgumentSubstitution, DeducedTemplateArgumentSubstitution, PriorTemplateArgumentSubstitution, DefaultTemplateArgumentChecking, ExceptionSpecInstantiation } |
The kind of template instantiation we are performing. More... | |
Public Member Functions | |
ActiveTemplateInstantiation () | |
bool | isInstantiationRecord () const |
Determines whether this template is an actual instantiation that should be counted toward the maximum instantiation depth. | |
Public Attributes | |
enum clang::Sema::ActiveTemplateInstantiation::InstantiationKind | Kind |
SourceLocation | PointOfInstantiation |
The point of instantiation within the source code. | |
NamedDecl * | Template |
The template (or partial specialization) in which we are performing the instantiation, for substitutions of prior template arguments. | |
Decl * | Entity |
The entity that is being instantiated. | |
const TemplateArgument * | TemplateArgs |
The list of template arguments we are substituting, if they are not part of the entity. | |
unsigned | NumTemplateArgs |
The number of template arguments in TemplateArgs. | |
sema::TemplateDeductionInfo * | DeductionInfo |
The template deduction info object associated with the substitution or checking of explicit or deduced template arguments. | |
SourceRange | InstantiationRange |
The source range that covers the construct that cause the instantiation, e.g., the template-id that causes a class template instantiation. | |
Friends | |
bool | operator== (const ActiveTemplateInstantiation &X, const ActiveTemplateInstantiation &Y) |
bool | operator!= (const ActiveTemplateInstantiation &X, const ActiveTemplateInstantiation &Y) |
The kind of template instantiation we are performing.
TemplateInstantiation |
We are instantiating a template declaration. The entity is the declaration we're instantiating (e.g., a CXXRecordDecl). |
DefaultTemplateArgumentInstantiation |
We are instantiating a default argument for a template parameter. The Entity is the template, and TemplateArgs/NumTemplateArguments provides the template arguments as specified. FIXME: Use a TemplateArgumentList |
DefaultFunctionArgumentInstantiation |
We are instantiating a default argument for a function. The Entity is the ParmVarDecl, and TemplateArgs/NumTemplateArgs provides the template arguments as specified. |
ExplicitTemplateArgumentSubstitution |
We are substituting explicit template arguments provided for a function template. The entity is a FunctionTemplateDecl. |
DeducedTemplateArgumentSubstitution |
We are substituting template argument determined as part of template argument deduction for either a class template partial specialization or a function template. The Entity is either a ClassTemplatePartialSpecializationDecl or a FunctionTemplateDecl. |
PriorTemplateArgumentSubstitution |
We are substituting prior template arguments into a new template parameter. The template parameter itself is either a NonTypeTemplateParmDecl or a TemplateTemplateParmDecl. |
DefaultTemplateArgumentChecking |
We are checking the validity of a default template argument that has been used when naming a template-id. |
ExceptionSpecInstantiation |
We are instantiating the exception specification for a function template which was deferred until it was needed. |
Determines whether this template is an actual instantiation that should be counted toward the maximum instantiation depth.
Definition at line 185 of file SemaTemplateInstantiate.cpp.
bool operator!= | ( | const ActiveTemplateInstantiation & | X, |
const ActiveTemplateInstantiation & | Y | ||
) | [friend] |
bool operator== | ( | const ActiveTemplateInstantiation & | X, |
const ActiveTemplateInstantiation & | Y | ||
) | [friend] |
enum clang::Sema::ActiveTemplateInstantiation::InstantiationKind clang::Sema::ActiveTemplateInstantiation::Kind |