class QualifiedTemplateName
Declaration
class QualifiedTemplateName : public Node { /* full declaration omitted */ };
Description
Represents a template name that was expressed as a qualified name. This kind of template name refers to a template name that was preceded by a nested name specifier, e.g., \c std::vector. Here, the nested name specifier is "std::" and the template name is the declaration for "vector". The QualifiedTemplateName class is only used to provide "sugar" for template names that were expressed with a qualified name, and has no semantic meaning. In this manner, it is to TemplateName what ElaboratedType is to Type, providing extra syntactic sugar for downstream clients.
Declared at: clang/include/clang/AST/TemplateName.h:405
Inherits from: FoldingSetBase::Node
Member Variables
- private llvm::PointerIntPair<NestedNameSpecifier*, 1> Qualifier
- The bit is used to indicate whether the "template" keyword was present before the template name itself. Note that the "template" keyword is always redundant in this case (otherwise, the template name would be a dependent name and we would express this name with DependentTemplateName).
- private clang::TemplateName UnderlyingTemplate
- The underlying template name, it is either 1) a Template -- a template declaration that this qualified name refers to. 2) or a UsingTemplate -- a template declaration introduced by a using-shadow declaration.
Method Overview
- public void Profile(llvm::FoldingSetNodeID & ID)
- public static void Profile(llvm::FoldingSetNodeID & ID, clang::NestedNameSpecifier * NNS, bool TemplateKeyword, clang::TemplateName TN)
- private QualifiedTemplateName(clang::NestedNameSpecifier * NNS, bool TemplateKeyword, clang::TemplateName Template)
- public clang::NestedNameSpecifier * getQualifier() const
- public clang::TemplateName getUnderlyingTemplate() const
- public bool hasTemplateKeyword() const
Inherited from FoldingSetBase::Node:
Methods
¶void Profile(llvm::FoldingSetNodeID& ID)
void Profile(llvm::FoldingSetNodeID& ID)
Declared at: clang/include/clang/AST/TemplateName.h:442
Parameters
¶static void Profile(
llvm::FoldingSetNodeID& ID,
clang::NestedNameSpecifier* NNS,
bool TemplateKeyword,
clang::TemplateName TN)
static void Profile(
llvm::FoldingSetNodeID& ID,
clang::NestedNameSpecifier* NNS,
bool TemplateKeyword,
clang::TemplateName TN)
Declared at: clang/include/clang/AST/TemplateName.h:446
Parameters
- llvm::FoldingSetNodeID& ID
- clang::NestedNameSpecifier* NNS
- bool TemplateKeyword
- clang::TemplateName TN
¶QualifiedTemplateName(
clang::NestedNameSpecifier* NNS,
bool TemplateKeyword,
clang::TemplateName Template)
QualifiedTemplateName(
clang::NestedNameSpecifier* NNS,
bool TemplateKeyword,
clang::TemplateName Template)
Declared at: clang/include/clang/AST/TemplateName.h:424
Parameters
- clang::NestedNameSpecifier* NNS
- bool TemplateKeyword
- clang::TemplateName Template
¶clang::NestedNameSpecifier* getQualifier() const
clang::NestedNameSpecifier* getQualifier() const
Description
Return the nested name specifier that qualifies this name.
Declared at: clang/include/clang/AST/TemplateName.h:433
¶clang::TemplateName getUnderlyingTemplate() const
clang::TemplateName getUnderlyingTemplate() const
Description
Return the underlying template name.
Declared at: clang/include/clang/AST/TemplateName.h:440
¶bool hasTemplateKeyword() const
bool hasTemplateKeyword() const
Description
Whether the template name was prefixed by the "template" keyword.
Declared at: clang/include/clang/AST/TemplateName.h:437