class DependentTemplateName

Declaration

class DependentTemplateName : public Node { /* full declaration omitted */ };

Description

Represents a dependent template name that cannot be resolved prior to template instantiation. This kind of template name refers to a dependent template name, including its nested name specifier (if any). For example, DependentTemplateName can refer to "MetaFun::template apply", where "MetaFun::" is the nested name specifier and "apply" is the template name referenced. The "template" keyword is implied.

Declared at: clang/include/clang/AST/TemplateName.h:462

Inherits from: FoldingSetBase::Node

Member Variables

private llvm:: PointerIntPair<NestedNameSpecifier*, 1, bool> Qualifier
The bit stored in this qualifier describes whether the \c Name field is interpreted as an IdentifierInfo pointer (when clear) or as an overloaded operator kind (when set).
private anonymous struct / union
private clang::TemplateName CanonicalTemplateName
The canonical template name for a dependent template name is another dependent template name whose nested name specifier is canonical.

Method Overview

  • private DependentTemplateName(clang::NestedNameSpecifier * Qualifier, const clang::IdentifierInfo * Identifier)
  • private DependentTemplateName(clang::NestedNameSpecifier * Qualifier, const clang::IdentifierInfo * Identifier, clang::TemplateName Canon)
  • private DependentTemplateName(clang::NestedNameSpecifier * Qualifier, clang::OverloadedOperatorKind Operator)
  • private DependentTemplateName(clang::NestedNameSpecifier * Qualifier, clang::OverloadedOperatorKind Operator, clang::TemplateName Canon)
  • public void Profile(llvm::FoldingSetNodeID & ID)
  • public static void Profile(llvm::FoldingSetNodeID & ID, clang::NestedNameSpecifier * NNS, const clang::IdentifierInfo * Identifier)
  • public static void Profile(llvm::FoldingSetNodeID & ID, clang::NestedNameSpecifier * NNS, clang::OverloadedOperatorKind Operator)
  • public const clang::IdentifierInfo * getIdentifier() const
  • public clang::OverloadedOperatorKind getOperator() const
  • public clang::NestedNameSpecifier * getQualifier() const
  • public bool isIdentifier() const
  • public bool isOverloadedOperator() const

Inherited from FoldingSetBase::Node:

Methods

DependentTemplateName(
    clang::NestedNameSpecifier* Qualifier,
    const clang::IdentifierInfo* Identifier)

Declared at: clang/include/clang/AST/TemplateName.h:494

Parameters

clang::NestedNameSpecifier* Qualifier
const clang::IdentifierInfo* Identifier

DependentTemplateName(
    clang::NestedNameSpecifier* Qualifier,
    const clang::IdentifierInfo* Identifier,
    clang::TemplateName Canon)

Declared at: clang/include/clang/AST/TemplateName.h:499

Parameters

clang::NestedNameSpecifier* Qualifier
const clang::IdentifierInfo* Identifier
clang::TemplateName Canon

DependentTemplateName(
    clang::NestedNameSpecifier* Qualifier,
    clang::OverloadedOperatorKind Operator)

Declared at: clang/include/clang/AST/TemplateName.h:505

Parameters

clang::NestedNameSpecifier* Qualifier
clang::OverloadedOperatorKind Operator

DependentTemplateName(
    clang::NestedNameSpecifier* Qualifier,
    clang::OverloadedOperatorKind Operator,
    clang::TemplateName Canon)

Declared at: clang/include/clang/AST/TemplateName.h:510

Parameters

clang::NestedNameSpecifier* Qualifier
clang::OverloadedOperatorKind Operator
clang::TemplateName Canon

void Profile(llvm::FoldingSetNodeID& ID)

Declared at: clang/include/clang/AST/TemplateName.h:540

Parameters

llvm::FoldingSetNodeID& ID

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

Declared at: clang/include/clang/AST/TemplateName.h:547

Parameters

llvm::FoldingSetNodeID& ID
clang::NestedNameSpecifier* NNS
const clang::IdentifierInfo* Identifier

static void Profile(
    llvm::FoldingSetNodeID& ID,
    clang::NestedNameSpecifier* NNS,
    clang::OverloadedOperatorKind Operator)

Declared at: clang/include/clang/AST/TemplateName.h:554

Parameters

llvm::FoldingSetNodeID& ID
clang::NestedNameSpecifier* NNS
clang::OverloadedOperatorKind Operator

const clang::IdentifierInfo* getIdentifier() const

Description

Returns the identifier to which this template name refers.

Declared at: clang/include/clang/AST/TemplateName.h:524

clang::OverloadedOperatorKind getOperator() const

Description

Return the overloaded operator to which this template name refers.

Declared at: clang/include/clang/AST/TemplateName.h:534

clang::NestedNameSpecifier* getQualifier() const

Description

Return the nested name specifier that qualifies this name.

Declared at: clang/include/clang/AST/TemplateName.h:518

bool isIdentifier() const

Description

Determine whether this template name refers to an identifier.

Declared at: clang/include/clang/AST/TemplateName.h:521

bool isOverloadedOperator() const

Description

Determine whether this template name refers to an overloaded operator.

Declared at: clang/include/clang/AST/TemplateName.h:531