class SubstTemplateTypeParmPackType

Declaration

class SubstTemplateTypeParmPackType : public Type, public Node { /* full declaration omitted */ };

Description

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 \c SubstTemplateTypeParmType at the current pack substitution index.

Declared at: clang/include/clang/AST/Type.h:5024

Inherits from: Type, FoldingSetBase::Node

Member Variables

private const clang::TemplateTypeParmType* Replaced
The original type parameter.
private const clang::TemplateArgument* Arguments
A pointer to the set of template arguments that this parameter pack is instantiated with.

Inherited from Type:

protected

Method Overview

  • public void Profile(llvm::FoldingSetNodeID & ID)
  • public static void Profile(llvm::FoldingSetNodeID & ID, const clang::TemplateTypeParmType * Replaced, const clang::TemplateArgument & ArgPack)
  • private SubstTemplateTypeParmPackType(const clang::TemplateTypeParmType * Param, clang::QualType Canon, const clang::TemplateArgument & ArgPack)
  • public static bool classof(const clang::Type * T)
  • public clang::QualType desugar() const
  • public clang::TemplateArgument getArgumentPack() const
  • public clang::IdentifierInfo * getIdentifier() const
  • public unsigned int getNumArgs() const
  • public const clang::TemplateTypeParmType * getReplacedParameter() const
  • public bool isSugared() const

Inherited from FoldingSetBase::Node:

Inherited from Type:

Inherited from ExtQualsTypeCommonBase:

    Methods

    void Profile(llvm::FoldingSetNodeID& ID)

    Declared at: clang/include/clang/AST/Type.h:5055

    Parameters

    llvm::FoldingSetNodeID& ID

    static void Profile(
        llvm::FoldingSetNodeID& ID,
        const clang::TemplateTypeParmType* Replaced,
        const clang::TemplateArgument& ArgPack)

    Declared at: clang/include/clang/AST/Type.h:5056

    Parameters

    llvm::FoldingSetNodeID& ID
    const clang::TemplateTypeParmType* Replaced
    const clang::TemplateArgument& ArgPack

    SubstTemplateTypeParmPackType(
        const clang::TemplateTypeParmType* Param,
        clang::QualType Canon,
        const clang::TemplateArgument& ArgPack)

    Declared at: clang/include/clang/AST/Type.h:5034

    Parameters

    const clang::TemplateTypeParmType* Param
    clang::QualType Canon
    const clang::TemplateArgument& ArgPack

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

    Declared at: clang/include/clang/AST/Type.h:5060

    Parameters

    const clang::Type* T

    clang::QualType desugar() const

    Declared at: clang/include/clang/AST/Type.h:5051

    clang::TemplateArgument getArgumentPack() const

    Declared at: clang/include/clang/AST/Type.h:5053

    clang::IdentifierInfo* getIdentifier() const

    Declared at: clang/include/clang/AST/Type.h:5039

    unsigned int getNumArgs() const

    Declared at: clang/include/clang/AST/Type.h:5046

    const clang::TemplateTypeParmType*
    getReplacedParameter() const

    Description

    Gets the template parameter that was substituted for.

    Declared at: clang/include/clang/AST/Type.h:5042

    bool isSugared() const

    Declared at: clang/include/clang/AST/Type.h:5050