clang API Documentation

Public Member Functions | Static Public Member Functions | Friends
clang::SubstNonTypeTemplateParmPackExpr Class Reference

Represents a reference to a non-type template parameter pack that has been substituted with a non-template argument pack. More...

#include <ExprCXX.h>

Inheritance diagram for clang::SubstNonTypeTemplateParmPackExpr:
Inheritance graph
[legend]
Collaboration diagram for clang::SubstNonTypeTemplateParmPackExpr:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 SubstNonTypeTemplateParmPackExpr (QualType T, NonTypeTemplateParmDecl *Param, SourceLocation NameLoc, const TemplateArgument &ArgPack)
NonTypeTemplateParmDeclgetParameterPack () const
 Retrieve the non-type template parameter pack being substituted.
SourceLocation getParameterPackLocation () const
 Retrieve the location of the parameter pack name.
TemplateArgument getArgumentPack () const
 Retrieve the template argument pack containing the substituted template arguments.
SourceRange getSourceRange () const LLVM_READONLY
child_range children ()

Static Public Member Functions

static bool classof (const Stmt *T)
static bool classof (const SubstNonTypeTemplateParmPackExpr *)

Friends

class ASTReader
class ASTStmtReader

Detailed Description

Represents a reference to a non-type template parameter pack that has been substituted with a non-template argument pack.

When a pack expansion in the source code contains multiple parameter packs and those parameter packs correspond to different levels of template parameter lists, this node node is used to represent a non-type template parameter pack from an outer level, which has already had its argument pack substituted but that still lives within a pack expansion that itself could not be instantiated. When actually performing a substitution into that pack expansion (e.g., when all template parameters have corresponding arguments), this type will be replaced with the appropriate underlying expression at the current pack substitution index.

Definition at line 3543 of file ExprCXX.h.


Constructor & Destructor Documentation

SubstNonTypeTemplateParmPackExpr::SubstNonTypeTemplateParmPackExpr ( QualType  T,
NonTypeTemplateParmDecl Param,
SourceLocation  NameLoc,
const TemplateArgument ArgPack 
)

Definition at line 1272 of file ExprCXX.cpp.


Member Function Documentation

child_range clang::SubstNonTypeTemplateParmPackExpr::children ( ) [inline]

Reimplemented from clang::Stmt.

Definition at line 3588 of file ExprCXX.h.

static bool clang::SubstNonTypeTemplateParmPackExpr::classof ( const Stmt T) [inline, static]

Reimplemented from clang::Expr.

Definition at line 3580 of file ExprCXX.h.

References clang::Stmt::getStmtClass().

static bool clang::SubstNonTypeTemplateParmPackExpr::classof ( const SubstNonTypeTemplateParmPackExpr ) [inline, static]

Definition at line 3583 of file ExprCXX.h.

TemplateArgument SubstNonTypeTemplateParmPackExpr::getArgumentPack ( ) const

Retrieve the template argument pack containing the substituted template arguments.

Definition at line 1281 of file ExprCXX.cpp.

NonTypeTemplateParmDecl* clang::SubstNonTypeTemplateParmPackExpr::getParameterPack ( ) const [inline]

Retrieve the non-type template parameter pack being substituted.

Definition at line 3569 of file ExprCXX.h.

References Param.

SourceLocation clang::SubstNonTypeTemplateParmPackExpr::getParameterPackLocation ( ) const [inline]

Retrieve the location of the parameter pack name.

Definition at line 3572 of file ExprCXX.h.

SourceRange clang::SubstNonTypeTemplateParmPackExpr::getSourceRange ( ) const [inline]

SourceLocation tokens are not useful in isolation - they are low level value objects created/interpreted by SourceManager. We assume AST clients will have a pointer to the respective SourceManager.

Reimplemented from clang::Stmt.

Definition at line 3578 of file ExprCXX.h.


Friends And Related Function Documentation

friend class ASTReader [friend]

Definition at line 3557 of file ExprCXX.h.

friend class ASTStmtReader [friend]

Reimplemented from clang::Stmt.

Definition at line 3558 of file ExprCXX.h.


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