clang API Documentation
Represents a reference to a function parameter pack that has been substituted but not yet expanded. More...
#include <ExprCXX.h>
Public Types | |
typedef ParmVarDecl *const * | iterator |
Iterators over the parameters which the parameter pack expanded into. | |
Public Member Functions | |
ParmVarDecl * | getParameterPack () const |
Get the parameter pack which this expression refers to. | |
SourceLocation | getParameterPackLocation () const |
Get the location of the parameter pack. | |
iterator | begin () const |
iterator | end () const |
unsigned | getNumExpansions () const |
Get the number of parameters in this parameter pack. | |
ParmVarDecl * | getExpansion (unsigned I) const |
Get an expansion of the parameter pack by index. | |
SourceLocation | getLocStart () const LLVM_READONLY |
SourceLocation | getLocEnd () const LLVM_READONLY |
child_range | children () |
Static Public Member Functions | |
static FunctionParmPackExpr * | Create (const ASTContext &Context, QualType T, ParmVarDecl *ParamPack, SourceLocation NameLoc, ArrayRef< Decl * > Params) |
static FunctionParmPackExpr * | CreateEmpty (const ASTContext &Context, unsigned NumParams) |
static bool | classof (const Stmt *T) |
Friends | |
class | ASTReader |
class | ASTStmtReader |
Represents a reference to a function parameter pack that has been substituted but not yet expanded.
When a pack expansion contains multiple parameter packs at different levels, this node is used to represent a function parameter pack at an outer level which we have already substituted to refer to expanded parameters, but where the containing pack expansion cannot yet be expanded.
template<typename...Ts> struct S { template<typename...Us> auto f(Ts ...ts) -> decltype(g(Us(ts)...)); }; template struct S<int, int>;
typedef ParmVarDecl* const* clang::FunctionParmPackExpr::iterator |
iterator clang::FunctionParmPackExpr::begin | ( | ) | const [inline] |
Definition at line 3693 of file ExprCXX.h.
Referenced by end(), and getExpansion().
child_range clang::FunctionParmPackExpr::children | ( | ) | [inline] |
Reimplemented from clang::Stmt.
static bool clang::FunctionParmPackExpr::classof | ( | const Stmt * | T | ) | [inline, static] |
Reimplemented from clang::Expr.
Definition at line 3705 of file ExprCXX.h.
References clang::Stmt::getStmtClass().
FunctionParmPackExpr * FunctionParmPackExpr::Create | ( | const ASTContext & | Context, |
QualType | T, | ||
ParmVarDecl * | ParamPack, | ||
SourceLocation | NameLoc, | ||
ArrayRef< Decl * > | Params | ||
) | [static] |
Definition at line 1457 of file ExprCXX.cpp.
References clang::ASTContext::Allocate().
FunctionParmPackExpr * FunctionParmPackExpr::CreateEmpty | ( | const ASTContext & | Context, |
unsigned | NumParams | ||
) | [static] |
Definition at line 1466 of file ExprCXX.cpp.
References clang::ASTContext::Allocate().
iterator clang::FunctionParmPackExpr::end | ( | ) | const [inline] |
ParmVarDecl* clang::FunctionParmPackExpr::getExpansion | ( | unsigned | I | ) | const [inline] |
SourceLocation clang::FunctionParmPackExpr::getLocEnd | ( | ) | const [inline] |
Reimplemented from clang::Stmt.
SourceLocation clang::FunctionParmPackExpr::getLocStart | ( | ) | const [inline] |
Reimplemented from clang::Stmt.
unsigned clang::FunctionParmPackExpr::getNumExpansions | ( | ) | const [inline] |
ParmVarDecl* clang::FunctionParmPackExpr::getParameterPack | ( | ) | const [inline] |
SourceLocation clang::FunctionParmPackExpr::getParameterPackLocation | ( | ) | const [inline] |
friend class ASTStmtReader [friend] |
Reimplemented from clang::Stmt.