class SubstNonTypeTemplateParmPackExpr

Declaration

class SubstNonTypeTemplateParmPackExpr : public Expr { /* full declaration omitted */ };

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 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.

Declared at: clang/include/clang/AST/ExprCXX.h:4329

Inherits from: Expr

Member Variables

private clang::NonTypeTemplateParmDecl* Param
The non-type template parameter pack itself.
private const clang::TemplateArgument* Arguments
A pointer to the set of template arguments that this parameter pack is instantiated with.
private unsigned int NumArguments
The number of template arguments in \c Arguments.
private clang::SourceLocation NameLoc
The location of the non-type template parameter pack reference.

Inherited from Stmt:

protected

Method Overview

Inherited from Expr:

Inherited from ValueStmt:

Inherited from Stmt:

Methods

SubstNonTypeTemplateParmPackExpr(
    clang::Stmt::EmptyShell Empty)

Declared at: clang/include/clang/AST/ExprCXX.h:4346

Parameters

clang::Stmt::EmptyShell Empty

SubstNonTypeTemplateParmPackExpr(
    clang::QualType T,
    clang::ExprValueKind ValueKind,
    clang::NonTypeTemplateParmDecl* Param,
    clang::SourceLocation NameLoc,
    const clang::TemplateArgument& ArgPack)

Declared at: clang/include/clang/AST/ExprCXX.h:4350

Parameters

clang::QualType T
clang::ExprValueKind ValueKind
clang::NonTypeTemplateParmDecl* Param
clang::SourceLocation NameLoc
const clang::TemplateArgument& ArgPack

clang::Stmt::child_range children()

Declared at: clang/include/clang/AST/ExprCXX.h:4374

clang::Stmt::const_child_range children() const

Declared at: clang/include/clang/AST/ExprCXX.h:4378

static bool classof(const clang::Stmt* T)

Declared at: clang/include/clang/AST/ExprCXX.h:4369

Parameters

const clang::Stmt* T

clang::TemplateArgument getArgumentPack() const

Description

Retrieve the template argument pack containing the substituted template arguments.

Declared at: clang/include/clang/AST/ExprCXX.h:4364

clang::SourceLocation getBeginLoc() const

Declared at: clang/include/clang/AST/ExprCXX.h:4366

clang::SourceLocation getEndLoc() const

Declared at: clang/include/clang/AST/ExprCXX.h:4367

clang::NonTypeTemplateParmDecl* getParameterPack()
    const

Description

Retrieve the non-type template parameter pack being substituted.

Declared at: clang/include/clang/AST/ExprCXX.h:4357

clang::SourceLocation getParameterPackLocation()
    const

Description

Retrieve the location of the parameter pack name.

Declared at: clang/include/clang/AST/ExprCXX.h:4360