class SizeOfPackExpr

Declaration

class SizeOfPackExpr : public Expr, private TrailingObjects { /* full declaration omitted */ };

Description

Represents an expression that computes the length of a parameter pack.

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

Inherits from: Expr, TrailingObjects

Member Variables

private clang::SourceLocation OperatorLoc
The location of the \c sizeof keyword.
private clang::SourceLocation PackLoc
The location of the name of the parameter pack.
private clang::SourceLocation RParenLoc
The location of the closing parenthesis.
private unsigned int Length
After partial substitution into a sizeof...(X) expression (for instance, within an alias template or during function template argument deduction), we store a trailing array of partially-substituted TemplateArguments, and this is the length of that array.
private clang::NamedDecl* Pack = nullptr
The parameter pack.

Inherited from Stmt:

protected

Method Overview

  • public static clang::SizeOfPackExpr * Create(clang::ASTContext & Context, clang::SourceLocation OperatorLoc, clang::NamedDecl * Pack, clang::SourceLocation PackLoc, clang::SourceLocation RParenLoc, Optional<unsigned int> Length = None, ArrayRef<clang::TemplateArgument> PartialArgs = None)
  • public static clang::SizeOfPackExpr * CreateDeserialized(clang::ASTContext & Context, unsigned int NumPartialArgs)
  • private SizeOfPackExpr(clang::QualType SizeType, clang::SourceLocation OperatorLoc, clang::NamedDecl * Pack, clang::SourceLocation PackLoc, clang::SourceLocation RParenLoc, Optional<unsigned int> Length, ArrayRef<clang::TemplateArgument> PartialArgs)
  • private SizeOfPackExpr(clang::Stmt::EmptyShell Empty, unsigned int NumPartialArgs)
  • public clang::Stmt::child_range children()
  • public clang::Stmt::const_child_range children() const
  • public static bool classof(const clang::Stmt * T)
  • public clang::SourceLocation getBeginLoc() const
  • public clang::SourceLocation getEndLoc() const
  • public clang::SourceLocation getOperatorLoc() const
  • public clang::NamedDecl * getPack() const
  • public unsigned int getPackLength() const
  • public clang::SourceLocation getPackLoc() const
  • public ArrayRef<clang::TemplateArgument> getPartialArguments() const
  • public clang::SourceLocation getRParenLoc() const
  • public bool isPartiallySubstituted() const

Inherited from Expr:

Inherited from ValueStmt:

Inherited from Stmt:

Methods

static clang::SizeOfPackExpr* Create(
    clang::ASTContext& Context,
    clang::SourceLocation OperatorLoc,
    clang::NamedDecl* Pack,
    clang::SourceLocation PackLoc,
    clang::SourceLocation RParenLoc,
    Optional<unsigned int> Length = None,
    ArrayRef<clang::TemplateArgument>
        PartialArgs = None)

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

Parameters

clang::ASTContext& Context
clang::SourceLocation OperatorLoc
clang::NamedDecl* Pack
clang::SourceLocation PackLoc
clang::SourceLocation RParenLoc
Optional<unsigned int> Length = None
ArrayRef<clang::TemplateArgument> PartialArgs = None

static clang::SizeOfPackExpr* CreateDeserialized(
    clang::ASTContext& Context,
    unsigned int NumPartialArgs)

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

Parameters

clang::ASTContext& Context
unsigned int NumPartialArgs

SizeOfPackExpr(
    clang::QualType SizeType,
    clang::SourceLocation OperatorLoc,
    clang::NamedDecl* Pack,
    clang::SourceLocation PackLoc,
    clang::SourceLocation RParenLoc,
    Optional<unsigned int> Length,
    ArrayRef<clang::TemplateArgument> PartialArgs)

Description

Create an expression that computes the length of the given parameter pack.

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

Parameters

clang::QualType SizeType
clang::SourceLocation OperatorLoc
clang::NamedDecl* Pack
clang::SourceLocation PackLoc
clang::SourceLocation RParenLoc
Optional<unsigned int> Length
ArrayRef<clang::TemplateArgument> PartialArgs

SizeOfPackExpr(clang::Stmt::EmptyShell Empty,
               unsigned int NumPartialArgs)

Description

Create an empty expression.

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

Parameters

clang::Stmt::EmptyShell Empty
unsigned int NumPartialArgs

clang::Stmt::child_range children()

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

clang::Stmt::const_child_range children() const

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

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

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

Parameters

const clang::Stmt* T

clang::SourceLocation getBeginLoc() const

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

clang::SourceLocation getEndLoc() const

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

clang::SourceLocation getOperatorLoc() const

Description

Determine the location of the 'sizeof' keyword.

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

clang::NamedDecl* getPack() const

Description

Retrieve the parameter pack.

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

unsigned int getPackLength() const

Description

Retrieve the length of the parameter pack. This routine may only be invoked when the expression is not value-dependent.

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

clang::SourceLocation getPackLoc() const

Description

Determine the location of the parameter pack.

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

ArrayRef<clang::TemplateArgument>
getPartialArguments() const

Description

Get

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

clang::SourceLocation getRParenLoc() const

Description

Determine the location of the right parenthesis.

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

bool isPartiallySubstituted() const

Description

Determine whether this represents a partially-substituted sizeof... expression, such as is produced for: template <typename ...Ts> using X = int[sizeof...(Ts)]; template <typename ...Us> void f(X <Us ..., 1, 2, 3, Us...>);

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