clang API Documentation
Represents the result of substituting a set of types for a template type parameter pack. More...
#include <Type.h>
Public Member Functions | |
IdentifierInfo * | getIdentifier () const |
const TemplateTypeParmType * | getReplacedParameter () const |
Gets the template parameter that was substituted for. | |
bool | isSugared () const |
QualType | desugar () const |
TemplateArgument | getArgumentPack () const |
void | Profile (llvm::FoldingSetNodeID &ID) |
Static Public Member Functions | |
static void | Profile (llvm::FoldingSetNodeID &ID, const TemplateTypeParmType *Replaced, const TemplateArgument &ArgPack) |
static bool | classof (const Type *T) |
Friends | |
class | ASTContext |
Represents the result of substituting a set of types for a template type parameter 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 type node is used to represent a template type 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 SubstTemplateTypeParmType
at the current pack substitution index.
static bool clang::SubstTemplateTypeParmPackType::classof | ( | const Type * | T | ) | [inline, static] |
Definition at line 3665 of file Type.h.
References clang::Type::getTypeClass().
QualType clang::SubstTemplateTypeParmPackType::desugar | ( | ) | const [inline] |
Definition at line 1961 of file Type.cpp.
Referenced by IsStructurallyEquivalent(), MarkUsedTemplateParameters(), and Profile().
IdentifierInfo* clang::SubstTemplateTypeParmPackType::getIdentifier | ( | ) | const [inline] |
const TemplateTypeParmType* clang::SubstTemplateTypeParmPackType::getReplacedParameter | ( | ) | const [inline] |
Gets the template parameter that was substituted for.
Definition at line 3651 of file Type.h.
Referenced by IsStructurallyEquivalent(), MarkUsedTemplateParameters(), and Profile().
bool clang::SubstTemplateTypeParmPackType::isSugared | ( | ) | const [inline] |
void SubstTemplateTypeParmPackType::Profile | ( | llvm::FoldingSetNodeID & | ID | ) |
Definition at line 1965 of file Type.cpp.
References getArgumentPack(), and getReplacedParameter().
Referenced by clang::ASTContext::getSubstTemplateTypeParmPackType().
void SubstTemplateTypeParmPackType::Profile | ( | llvm::FoldingSetNodeID & | ID, |
const TemplateTypeParmType * | Replaced, | ||
const TemplateArgument & | ArgPack | ||
) | [static] |
Definition at line 1969 of file Type.cpp.
References P, clang::TemplateArgument::pack_elements(), and clang::TemplateArgument::pack_size().
friend class ASTContext [friend] |
Reimplemented from clang::Type.