clang
3.7.0
|
Data structure that captures multiple levels of template argument lists for use in template instantiation. More...
#include <Template.h>
Public Member Functions | |
MultiLevelTemplateArgumentList () | |
Construct an empty set of template argument lists. More... | |
MultiLevelTemplateArgumentList (const TemplateArgumentList &TemplateArgs) | |
Construct a single-level template argument list. More... | |
unsigned | getNumLevels () const |
Determine the number of levels in this template argument list. More... | |
const TemplateArgument & | operator() (unsigned Depth, unsigned Index) const |
Retrieve the template argument at a given depth and index. More... | |
bool | hasTemplateArgument (unsigned Depth, unsigned Index) const |
Determine whether there is a non-NULL template argument at the given depth and index. More... | |
void | setArgument (unsigned Depth, unsigned Index, TemplateArgument Arg) |
Clear out a specific template argument. More... | |
void | addOuterTemplateArguments (const TemplateArgumentList *TemplateArgs) |
Add a new outermost level to the multi-level template argument list. More... | |
void | addOuterTemplateArguments (ArgList Args) |
Add a new outmost level to the multi-level template argument list. More... | |
const ArgList & | getInnermost () const |
Retrieve the innermost template argument list. More... | |
Data structure that captures multiple levels of template argument lists for use in template instantiation.
Multiple levels of template arguments occur when instantiating the definitions of member templates. For example:
When instantiating X<int>::Y<17>::f, the multi-level template argument list will contain a template argument list (int) at depth 0 and a template argument list (17) at depth 1.
Definition at line 42 of file Template.h.
|
inline |
Construct an empty set of template argument lists.
Definition at line 52 of file Template.h.
|
inlineexplicit |
Construct a single-level template argument list.
Definition at line 56 of file Template.h.
References addOuterTemplateArguments().
|
inline |
Add a new outermost level to the multi-level template argument list.
Definition at line 96 of file Template.h.
References clang::TemplateArgumentList::data(), and clang::TemplateArgumentList::size().
Referenced by clang::Sema::BuildVarTemplateInstantiation(), clang::Sema::CheckTemplateIdType(), clang::Sema::getTemplateInstantiationArgs(), MultiLevelTemplateArgumentList(), SubstDefaultTemplateArgument(), and clang::TemplateDeclInstantiator::VisitCXXMethodDecl().
|
inline |
Add a new outmost level to the multi-level template argument list.
Definition at line 103 of file Template.h.
|
inline |
Retrieve the innermost template argument list.
Definition at line 108 of file Template.h.
Referenced by clang::Sema::BuildCXXDefaultArgExpr().
|
inline |
Determine the number of levels in this template argument list.
Definition at line 62 of file Template.h.
Referenced by clang::Sema::CheckParameterPacksForExpansion(), clang::Sema::getNumArgumentsInExpansion(), hasTemplateArgument(), operator()(), and setArgument().
|
inline |
Determine whether there is a non-NULL template argument at the given depth and index.
There must exist a template argument list at the given depth.
Definition at line 75 of file Template.h.
References Depth, and getNumLevels().
Referenced by clang::Sema::CheckParameterPacksForExpansion(), and clang::Sema::getNumArgumentsInExpansion().
|
inline |
Retrieve the template argument at a given depth and index.
Definition at line 65 of file Template.h.
References getNumLevels().
|
inline |
Clear out a specific template argument.
Definition at line 85 of file Template.h.
References getNumLevels().