clang  3.7.0
Public Types | Public Member Functions | Public Attributes | Friends | List of all members
clang::Sema::ActiveTemplateInstantiation Struct Reference

A template instantiation that is currently in progress. More...

#include <Sema.h>

Collaboration diagram for clang::Sema::ActiveTemplateInstantiation:
[legend]

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...
 
NamedDeclTemplate
 The template (or partial specialization) in which we are performing the instantiation, for substitutions of prior template arguments. More...
 
DeclEntity
 The entity that is being instantiated. More...
 
const TemplateArgumentTemplateArgs
 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::TemplateDeductionInfoDeductionInfo
 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)
 

Detailed Description

A template instantiation that is currently in progress.

Definition at line 6398 of file Sema.h.

Member Enumeration Documentation

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.

Definition at line 6400 of file Sema.h.

Constructor & Destructor Documentation

clang::Sema::ActiveTemplateInstantiation::ActiveTemplateInstantiation ( )
inline

Definition at line 6469 of file Sema.h.

Member Function Documentation

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.

Friends And Related Function Documentation

bool operator!= ( const ActiveTemplateInstantiation X,
const ActiveTemplateInstantiation Y 
)
friend

Definition at line 6505 of file Sema.h.

bool operator== ( const ActiveTemplateInstantiation X,
const ActiveTemplateInstantiation Y 
)
friend

Definition at line 6477 of file Sema.h.

Member Data Documentation

sema::TemplateDeductionInfo* clang::Sema::ActiveTemplateInstantiation::DeductionInfo

The template deduction info object associated with the substitution or checking of explicit or deduced template arguments.

Definition at line 6462 of file Sema.h.

Decl* clang::Sema::ActiveTemplateInstantiation::Entity

The entity that is being instantiated.

Definition at line 6451 of file Sema.h.

SourceRange clang::Sema::ActiveTemplateInstantiation::InstantiationRange

The source range that covers the construct that cause the instantiation, e.g., the template-id that causes a class template instantiation.

Definition at line 6467 of file Sema.h.

enum clang::Sema::ActiveTemplateInstantiation::InstantiationKind clang::Sema::ActiveTemplateInstantiation::Kind
unsigned clang::Sema::ActiveTemplateInstantiation::NumTemplateArgs

The number of template arguments in TemplateArgs.

Definition at line 6458 of file Sema.h.

SourceLocation clang::Sema::ActiveTemplateInstantiation::PointOfInstantiation

The point of instantiation within the source code.

Definition at line 6443 of file Sema.h.

NamedDecl* clang::Sema::ActiveTemplateInstantiation::Template

The template (or partial specialization) in which we are performing the instantiation, for substitutions of prior template arguments.

Definition at line 6448 of file Sema.h.

const TemplateArgument* clang::Sema::ActiveTemplateInstantiation::TemplateArgs

The list of template arguments we are substituting, if they are not part of the entity.

Definition at line 6455 of file Sema.h.


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