clang
3.7.0
|
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. More... | |
Public Attributes | |
enum clang::Sema::ActiveTemplateInstantiation::InstantiationKind | Kind |
SourceLocation | PointOfInstantiation |
The point of instantiation within the source code. More... | |
NamedDecl * | Template |
The template (or partial specialization) in which we are performing the instantiation, for substitutions of prior template arguments. More... | |
Decl * | Entity |
The entity that is being instantiated. More... | |
const TemplateArgument * | TemplateArgs |
The list of template arguments we are substituting, if they are not part of the entity. More... | |
unsigned | NumTemplateArgs |
The number of template arguments in TemplateArgs. More... | |
sema::TemplateDeductionInfo * | DeductionInfo |
The template deduction info object associated with the substitution or checking of explicit or deduced template arguments. More... | |
SourceRange | InstantiationRange |
The source range that covers the construct that cause the instantiation, e.g., the template-id that causes a class template instantiation. More... | |
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.
Enumerator | |
---|---|
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. |
|
inline |
bool Sema::ActiveTemplateInstantiation::isInstantiationRecord | ( | ) | const |
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.
|
friend |
|
friend |
sema::TemplateDeductionInfo* clang::Sema::ActiveTemplateInstantiation::DeductionInfo |
Decl* clang::Sema::ActiveTemplateInstantiation::Entity |
SourceRange clang::Sema::ActiveTemplateInstantiation::InstantiationRange |
enum clang::Sema::ActiveTemplateInstantiation::InstantiationKind clang::Sema::ActiveTemplateInstantiation::Kind |
unsigned clang::Sema::ActiveTemplateInstantiation::NumTemplateArgs |
SourceLocation clang::Sema::ActiveTemplateInstantiation::PointOfInstantiation |
NamedDecl* clang::Sema::ActiveTemplateInstantiation::Template |
const TemplateArgument* clang::Sema::ActiveTemplateInstantiation::TemplateArgs |