class DependentNameType

Declaration

class DependentNameType : public TypeWithKeyword, public Node { /* full declaration omitted */ };

Description

Represents a qualified type name for which the type name is dependent. DependentNameType represents a class of dependent types that involve a possibly dependent nested-name-specifier (e.g., "T::") followed by a name of a type. The DependentNameType may start with a "typename" (for a typename-specifier), "class", "struct", "union", or "enum" (for a dependent elaborated-type-specifier), or nothing (in contexts where we know that we must be referring to a type, e.g., in a base class specifier). Typically the nested-name-specifier is dependent, but in MSVC compatibility mode, this type is used with non-dependent names to delay name lookup until instantiation.

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

Inherits from: TypeWithKeyword, FoldingSetBase::Node

Member Variables

private clang::NestedNameSpecifier* NNS
The nested name specifier containing the qualifier.
private const clang::IdentifierInfo* Name
The type that this typename specifier refers to.

Inherited from Type:

protected

Method Overview

  • private DependentNameType(clang::ElaboratedTypeKeyword Keyword, clang::NestedNameSpecifier * NNS, const clang::IdentifierInfo * Name, clang::QualType CanonType)
  • public void Profile(llvm::FoldingSetNodeID & ID)
  • public static void Profile(llvm::FoldingSetNodeID & ID, clang::ElaboratedTypeKeyword Keyword, clang::NestedNameSpecifier * NNS, const clang::IdentifierInfo * Name)
  • public static bool classof(const clang::Type * T)
  • public clang::QualType desugar() const
  • public const clang::IdentifierInfo * getIdentifier() const
  • public clang::NestedNameSpecifier * getQualifier() const
  • public bool isSugared() const

Inherited from FoldingSetBase::Node:

Inherited from TypeWithKeyword:

Inherited from Type:

Inherited from ExtQualsTypeCommonBase:

    Methods

    DependentNameType(
        clang::ElaboratedTypeKeyword Keyword,
        clang::NestedNameSpecifier* NNS,
        const clang::IdentifierInfo* Name,
        clang::QualType CanonType)

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

    Parameters

    clang::ElaboratedTypeKeyword Keyword
    clang::NestedNameSpecifier* NNS
    const clang::IdentifierInfo* Name
    clang::QualType CanonType

    void Profile(llvm::FoldingSetNodeID& ID)

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

    Parameters

    llvm::FoldingSetNodeID& ID

    static void Profile(
        llvm::FoldingSetNodeID& ID,
        clang::ElaboratedTypeKeyword Keyword,
        clang::NestedNameSpecifier* NNS,
        const clang::IdentifierInfo* Name)

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

    Parameters

    llvm::FoldingSetNodeID& ID
    clang::ElaboratedTypeKeyword Keyword
    clang::NestedNameSpecifier* NNS
    const clang::IdentifierInfo* Name

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

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

    Parameters

    const clang::Type* T

    clang::QualType desugar() const

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

    const clang::IdentifierInfo* getIdentifier() const

    Description

    Retrieve the type named by the typename specifier as an identifier. This routine will return a non-NULL identifier pointer when the form of the original typename was terminated by an identifier, e.g., "typename T::type".

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

    clang::NestedNameSpecifier* getQualifier() const

    Description

    Retrieve the qualification on this type.

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

    bool isSugared() const

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