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:
Method Overview
- private SubstNonTypeTemplateParmPackExpr(clang::Stmt::EmptyShell Empty)
- public SubstNonTypeTemplateParmPackExpr(clang::QualType T, clang::ExprValueKind ValueKind, clang::NonTypeTemplateParmDecl * Param, clang::SourceLocation NameLoc, const clang::TemplateArgument & ArgPack)
- public clang::Stmt::child_range children()
- public clang::Stmt::const_child_range children() const
- public static bool classof(const clang::Stmt * T)
- public clang::TemplateArgument getArgumentPack() const
- public clang::SourceLocation getBeginLoc() const
- public clang::SourceLocation getEndLoc() const
- public clang::NonTypeTemplateParmDecl * getParameterPack() const
- public clang::SourceLocation getParameterPackLocation() const
Inherited from Expr:
- public Classify
- public ClassifyLValue
- public ClassifyModifiable
- public EvaluateAsBooleanCondition
- public EvaluateAsConstantExpr
- public EvaluateAsFixedPoint
- public EvaluateAsFloat
- public EvaluateAsInitializer
- public EvaluateAsInt
- public EvaluateAsLValue
- public EvaluateAsRValue
- public EvaluateForOverflow
- public EvaluateKnownConstInt
- public EvaluateKnownConstIntCheckOverflow
- public EvaluateWithSubstitution
- public HasSideEffects
- public IgnoreCasts
- public IgnoreCasts
- public IgnoreConversionOperatorSingleStep
- public IgnoreConversionOperatorSingleStep
- public IgnoreImpCasts
- public IgnoreImpCasts
- public IgnoreImplicit
- public IgnoreImplicit
- public IgnoreImplicitAsWritten
- public IgnoreImplicitAsWritten
- public IgnoreParenBaseCasts
- public IgnoreParenBaseCasts
- public IgnoreParenCasts
- public IgnoreParenCasts
- public IgnoreParenImpCasts
- public IgnoreParenImpCasts
- public IgnoreParenLValueCasts
- public IgnoreParenLValueCasts
- public IgnoreParenNoopCasts
- public IgnoreParenNoopCasts
- public IgnoreParens
- public IgnoreParens
- public IgnoreUnlessSpelledInSource
- public IgnoreUnlessSpelledInSource
- public classof
- public containsErrors
- public containsUnexpandedParameterPack
- public findBoundMemberType
- public getAsBuiltinConstantDeclRef
- public getBestDynamicClassType
- public getBestDynamicClassTypeExpr
- public getDependence
- public getExprLoc
- public getFPFeaturesInEffect
- public getIntegerConstantExpr
- public getObjCProperty
- public getObjectKind
- public getReferencedDeclOfCallee
- public getReferencedDeclOfCallee
- public getSourceBitField
- public getSourceBitField
- public getType
- public getValueKind
- public getValueKindForType
- public hasAnyTypeDependentArguments
- public hasNonTrivialCall
- public hasPlaceholderType
- public hasPlaceholderType
- public isBoundMemberFunction
- public isCXX11ConstantExpr
- public isCXX98IntegralConstantExpr
- public isConstantInitializer
- public isDefaultArgument
- public isEvaluatable
- public isGLValue
- public isImplicitCXXThis
- public isInstantiationDependent
- public isIntegerConstantExpr
- public isKnownToHaveBooleanValue
- public isLValue
- public isModifiableLvalue
- public isNullPointerConstant
- public isOBJCGCCandidate
- public isObjCSelfExpr
- public isOrdinaryOrBitFieldObject
- public isPRValue
- public isPotentialConstantExpr
- public isPotentialConstantExprUnevaluated
- public isReadIfDiscardedInCPlusPlus11
- public isSameComparisonOperand
- public isTemporaryObject
- public isTypeDependent
- public isUnusedResultAWarning
- public isValueDependent
- public isXValue
- public refersToBitField
- public refersToGlobalRegisterVar
- public refersToMatrixElement
- public refersToVectorElement
- protected setDependence
- public setObjectKind
- public setType
- public setValueKind
- public skipRValueSubobjectAdjustments
- public skipRValueSubobjectAdjustments
- public tryEvaluateObjectSize
- public tryEvaluateStrLen
Inherited from ValueStmt:
Inherited from Stmt:
- public EnableStatistics
- public IgnoreContainers
- public IgnoreContainers
- public PrintStats
- public ProcessODRHash
- public Profile
- public addStmtClass
- public child_begin
- public child_begin
- public child_end
- public child_end
- public children
- public children
- public determineLikelihoodConflict
- public dump
- public dump
- public dumpColor
- public dumpPretty
- public getBeginLoc
- public getEndLoc
- public getID
- public getLikelihood
- public getLikelihood
- public getLikelihood
- public getLikelihoodAttr
- public getSourceRange
- public getStmtClass
- public getStmtClassName
- public printJson
- public printPretty
- public printPrettyControlled
- public stripLabelLikeStatements
- public stripLabelLikeStatements
- public viewAST
Methods
¶SubstNonTypeTemplateParmPackExpr(
clang::Stmt::EmptyShell Empty)
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)
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()
clang::Stmt::child_range children()
Declared at: clang/include/clang/AST/ExprCXX.h:4374
¶clang::Stmt::const_child_range children() const
clang::Stmt::const_child_range children() const
Declared at: clang/include/clang/AST/ExprCXX.h:4378
¶static bool classof(const clang::Stmt* T)
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
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
clang::SourceLocation getBeginLoc() const
Declared at: clang/include/clang/AST/ExprCXX.h:4366
¶clang::SourceLocation getEndLoc() const
clang::SourceLocation getEndLoc() const
Declared at: clang/include/clang/AST/ExprCXX.h:4367
¶clang::NonTypeTemplateParmDecl* getParameterPack()
const
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
clang::SourceLocation getParameterPackLocation()
const
Description
Retrieve the location of the parameter pack name.
Declared at: clang/include/clang/AST/ExprCXX.h:4360