clang API Documentation
Represents a template argument within a class template specialization. More...
#include <TemplateBase.h>


Public Types | |
| enum | ArgKind { Null = 0, Type, Declaration, Integral, Template, TemplateExpansion, Expression, Pack } |
| The kind of template argument we're storing. More... | |
| typedef const TemplateArgument * | pack_iterator |
| Iterator that traverses the elements of a template argument pack. | |
Public Member Functions | |
| TemplateArgument () | |
| Construct an empty, invalid template argument. | |
| TemplateArgument (QualType T) | |
| Construct a template type argument. | |
| TemplateArgument (Decl *D) | |
| Construct a template argument that refers to a declaration, which is either an external declaration or a template declaration. | |
| TemplateArgument (const llvm::APSInt &Value, QualType Type) | |
| Construct an integral constant template argument. | |
| TemplateArgument (TemplateName Name) | |
| Construct a template argument that is a template. | |
| TemplateArgument (TemplateName Name, llvm::Optional< unsigned > NumExpansions) | |
| Construct a template argument that is a template pack expansion. | |
| TemplateArgument (Expr *E) | |
| Construct a template argument that is an expression. | |
| TemplateArgument (const TemplateArgument *Args, unsigned NumArgs) | |
| Construct a template argument that is a template argument pack. | |
| TemplateArgument (const TemplateArgument &Other) | |
| Copy constructor for a template argument. | |
| TemplateArgument & | operator= (const TemplateArgument &Other) |
| ~TemplateArgument () | |
| ArgKind | getKind () const |
| Return the kind of stored template argument. | |
| bool | isNull () const |
| Determine whether this template argument has no value. | |
| bool | isDependent () const |
| Whether this template argument is dependent on a template parameter such that its result can change from one instantiation to another. | |
| bool | isInstantiationDependent () const |
| Whether this template argument is dependent on a template parameter. | |
| bool | containsUnexpandedParameterPack () const |
| Whether this template argument contains an unexpanded parameter pack. | |
| bool | isPackExpansion () const |
| Determine whether this template argument is a pack expansion. | |
| QualType | getAsType () const |
| Retrieve the template argument as a type. | |
| Decl * | getAsDecl () const |
| Retrieve the template argument as a declaration. | |
| TemplateName | getAsTemplate () const |
| Retrieve the template argument as a template name. | |
| TemplateName | getAsTemplateOrTemplatePattern () const |
| Retrieve the template argument as a template name; if the argument is a pack expansion, return the pattern as a template name. | |
| llvm::Optional< unsigned > | getNumTemplateExpansions () const |
| Retrieve the number of expansions that a template template argument expansion will produce, if known. | |
| llvm::APSInt * | getAsIntegral () |
| Retrieve the template argument as an integral value. | |
| const llvm::APSInt * | getAsIntegral () const |
| QualType | getIntegralType () const |
| Retrieve the type of the integral value. | |
| void | setIntegralType (QualType T) |
| Expr * | getAsExpr () const |
| Retrieve the template argument as an expression. | |
| pack_iterator | pack_begin () const |
| Iterator referencing the first argument of a template argument pack. | |
| pack_iterator | pack_end () const |
| Iterator referencing one past the last argument of a template argument pack. | |
| unsigned | pack_size () const |
| The number of template arguments in the given template argument pack. | |
| bool | structurallyEquals (const TemplateArgument &Other) const |
| TemplateArgument | getPackExpansionPattern () const |
| When the template argument is a pack expansion, returns the pattern of the pack expansion. | |
| void | print (const PrintingPolicy &Policy, raw_ostream &Out) const |
| Print this template argument to the given output stream. | |
| void | Profile (llvm::FoldingSetNodeID &ID, const ASTContext &Context) const |
| Used to insert TemplateArguments into FoldingSets. | |
Static Public Member Functions | |
| static TemplateArgument | CreatePackCopy (ASTContext &Context, const TemplateArgument *Args, unsigned NumArgs) |
| Create a new template argument pack by copying the given set of template arguments. | |
Represents a template argument within a class template specialization.
Definition at line 39 of file TemplateBase.h.
| typedef const TemplateArgument* clang::TemplateArgument::pack_iterator |
Iterator that traverses the elements of a template argument pack.
Definition at line 322 of file TemplateBase.h.
The kind of template argument we're storing.
| Null |
Represents an empty template argument, e.g., one that has not been deduced. |
| Type |
The template argument is a type. Its value is stored in the TypeOrValue field. |
| Declaration |
The template argument is a declaration that was provided for a pointer or reference non-type template parameter. |
| Integral |
The template argument is an integral value stored in an llvm::APSInt that was provided for an integral non-type template parameter. |
| Template |
The template argument is a template name that was provided for a template template parameter. |
| TemplateExpansion |
The template argument is a pack expansion of a template name that was provided for a template template parameter. |
| Expression |
The template argument is a value- or type-dependent expression stored in an Expr*. |
| Pack |
The template argument is actually a parameter pack. Arguments are stored in the Args struct. |
Definition at line 42 of file TemplateBase.h.
| clang::TemplateArgument::TemplateArgument | ( | ) | [inline] |
Construct an empty, invalid template argument.
Definition at line 93 of file TemplateBase.h.
Referenced by CreatePackCopy(), and getPackExpansionPattern().
| clang::TemplateArgument::TemplateArgument | ( | QualType | T | ) | [inline] |
Construct a template type argument.
Definition at line 96 of file TemplateBase.h.
References clang::QualType::getAsOpaquePtr(), and TypeOrValue.
| clang::TemplateArgument::TemplateArgument | ( | Decl * | D | ) | [inline] |
Construct a template argument that refers to a declaration, which is either an external declaration or a template declaration.
Definition at line 103 of file TemplateBase.h.
References TypeOrValue.
| clang::TemplateArgument::TemplateArgument | ( | const llvm::APSInt & | Value, |
| QualType | Type | ||
| ) | [inline] |
Construct an integral constant template argument.
Definition at line 108 of file TemplateBase.h.
References clang::QualType::getAsOpaquePtr(), and Integer.
| clang::TemplateArgument::TemplateArgument | ( | TemplateName | Name | ) | [inline] |
Construct a template argument that is a template.
This form of template argument is generally used for template template parameters. However, the template name could be a dependent template name that ends up being instantiated to a function template whose address is taken.
| Name | The template name. |
Definition at line 123 of file TemplateBase.h.
References clang::TemplateName::getAsVoidPointer(), and TemplateArg.
| clang::TemplateArgument::TemplateArgument | ( | TemplateName | Name, |
| llvm::Optional< unsigned > | NumExpansions | ||
| ) | [inline] |
Construct a template argument that is a template pack expansion.
This form of template argument is generally used for template template parameters. However, the template name could be a dependent template name that ends up being instantiated to a function template whose address is taken.
| Name | The template name. |
| NumExpansions | The number of expansions that will be generated by instantiating |
Definition at line 140 of file TemplateBase.h.
References clang::TemplateName::getAsVoidPointer(), and TemplateArg.
| clang::TemplateArgument::TemplateArgument | ( | Expr * | E | ) | [inline] |
Construct a template argument that is an expression.
This form of template argument only occurs in template argument lists used for dependent types and for expression; it will not occur in a non-dependent, canonical template argument list.
Definition at line 155 of file TemplateBase.h.
References TypeOrValue.
| clang::TemplateArgument::TemplateArgument | ( | const TemplateArgument * | Args, |
| unsigned | NumArgs | ||
| ) | [inline] |
Construct a template argument that is a template argument pack.
We assume that storage for the template arguments provided outlives the TemplateArgument itself.
Definition at line 163 of file TemplateBase.h.
| clang::TemplateArgument::TemplateArgument | ( | const TemplateArgument & | Other | ) | [inline] |
Copy constructor for a template argument.
Definition at line 169 of file TemplateBase.h.
References Args, getAsIntegral(), Integer, Integral, NumArgs, Pack, Template, TemplateArg, TemplateExpansion, and TypeOrValue.
| clang::TemplateArgument::~TemplateArgument | ( | ) | [inline] |
Definition at line 217 of file TemplateBase.h.
References getAsIntegral(), and Integral.
| bool TemplateArgument::containsUnexpandedParameterPack | ( | ) | const |
Whether this template argument contains an unexpanded parameter pack.
Definition at line 173 of file TemplateBase.cpp.
References Declaration, Expression, getAsExpr(), getAsTemplate(), getAsType(), getKind(), Integral, Null, P, Pack, pack_begin(), pack_end(), Template, and TemplateExpansion.
Referenced by clang::Sema::DiagnoseUnexpandedParameterPack(), and clang::TreeTransform< Derived >::TransformTemplateArguments().
| TemplateArgument TemplateArgument::CreatePackCopy | ( | ASTContext & | Context, |
| const TemplateArgument * | Args, | ||
| unsigned | NumArgs | ||
| ) | [static] |
Create a new template argument pack by copying the given set of template arguments.
Definition at line 57 of file TemplateBase.cpp.
References TemplateArgument().
Referenced by clang::Sema::CheckTemplateArgumentList(), ConvertDeducedTemplateArgument(), and GenerateInjectedTemplateArgs().
| Decl* clang::TemplateArgument::getAsDecl | ( | ) | const [inline] |
Retrieve the template argument as a declaration.
Definition at line 261 of file TemplateBase.h.
References Declaration, and TypeOrValue.
Referenced by clang::ASTWriter::AddTemplateArgument(), clang::Sema::BuildExpressionFromDeclTemplateArgument(), checkDeducedTemplateArguments(), DeduceTemplateArguments(), clang::ASTContext::getCanonicalTemplateArgument(), clang::ASTNodeImporter::ImportTemplateArgument(), isDependent(), isInstantiationDependent(), isSameTemplateArg(), IsStructurallyEquivalent(), clang::operator<<(), print(), Profile(), and clang::TreeTransform< Derived >::TransformTemplateArgument().
| Expr* clang::TemplateArgument::getAsExpr | ( | ) | const [inline] |
Retrieve the template argument as an expression.
Definition at line 314 of file TemplateBase.h.
References Expression, and TypeOrValue.
Referenced by clang::ASTWriter::AddTemplateArgument(), clang::ASTWriter::AddTemplateArgumentLoc(), checkDeducedTemplateArguments(), CheckNonTypeClassTemplatePartialSpecializationArgs(), clang::Sema::CheckTemplateArgument(), clang::Sema::CheckTemplateTypeArgument(), containsUnexpandedParameterPack(), DeduceTemplateArguments(), getPackExpansionPattern(), clang::TemplateArgumentLoc::getPackExpansionPattern(), getTrivialTemplateArgumentLoc(), clang::ASTNodeImporter::ImportTemplateArgument(), clang::TreeTransform< Derived >::InventTemplateArgumentLoc(), isDependent(), isInstantiationDependent(), isPackExpansion(), isSameTemplateArg(), IsStructurallyEquivalent(), MarkUsedTemplateParameters(), clang::operator<<(), print(), Profile(), clang::ASTReader::ReadTemplateArgumentLoc(), clang::TreeTransform< Derived >::TransformTemplateArgument(), and clang::RecursiveASTVisitor< Derived >::TraverseTemplateArgument().
| llvm::APSInt* clang::TemplateArgument::getAsIntegral | ( | ) | [inline] |
Retrieve the template argument as an integral value.
Definition at line 289 of file TemplateBase.h.
References Integer, and Integral.
Referenced by clang::ASTWriter::AddTemplateArgument(), clang::Sema::BuildExpressionFromIntegralTemplateArgument(), checkDeducedTemplateArguments(), DeduceTemplateArguments(), getAsIntegral(), clang::ASTContext::getCanonicalTemplateArgument(), clang::ASTNodeImporter::ImportTemplateArgument(), isSameTemplateArg(), IsStructurallyEquivalent(), clang::operator<<(), operator=(), printIntegral(), Profile(), structurallyEquals(), TemplateArgument(), and ~TemplateArgument().
| const llvm::APSInt* clang::TemplateArgument::getAsIntegral | ( | ) | const [inline] |
Definition at line 295 of file TemplateBase.h.
References getAsIntegral().
| TemplateName clang::TemplateArgument::getAsTemplate | ( | ) | const [inline] |
Retrieve the template argument as a template name.
Definition at line 268 of file TemplateBase.h.
References clang::TemplateName::getFromVoidPointer(), Template, and TemplateArg.
Referenced by clang::Sema::ActOnTemplateTemplateParameter(), checkDeducedTemplateArguments(), clang::Sema::CheckTemplateArgument(), clang::Sema::CheckTemplateTypeArgument(), containsUnexpandedParameterPack(), DeduceTemplateArguments(), clang::ASTContext::getCanonicalTemplateArgument(), getTrivialTemplateArgumentLoc(), clang::ASTNodeImporter::ImportTemplateArgument(), clang::TemplateSpecializationTypeLoc::initializeArgLocs(), clang::TreeTransform< Derived >::InventTemplateArgumentLoc(), isDependent(), isInstantiationDependent(), IsStructurallyEquivalent(), clang::operator<<(), print(), clang::TreeTransform< Derived >::RebuildPackExpansion(), SubstDefaultTemplateArgument(), and clang::TreeTransform< Derived >::TransformTemplateArgument().
| TemplateName clang::TemplateArgument::getAsTemplateOrTemplatePattern | ( | ) | const [inline] |
Retrieve the template argument as a template name; if the argument is a pack expansion, return the pattern as a template name.
Definition at line 277 of file TemplateBase.h.
References clang::TemplateName::getFromVoidPointer(), Template, TemplateArg, and TemplateExpansion.
Referenced by addAssociatedClassesAndNamespaces(), clang::ASTWriter::AddTemplateArgument(), checkDeducedTemplateArguments(), clang::Sema::CheckTemplateArgument(), clang::ASTContext::getCanonicalTemplateArgument(), getPackExpansionPattern(), clang::ASTNodeImporter::ImportTemplateArgument(), isSameTemplateArg(), IsStructurallyEquivalent(), MarkUsedTemplateParameters(), clang::operator<<(), print(), Profile(), clang::RecursiveASTVisitor< Derived >::TraverseTemplateArgument(), and clang::RecursiveASTVisitor< Derived >::TraverseTemplateArgumentLoc().
| QualType clang::TemplateArgument::getAsType | ( | ) | const [inline] |
Retrieve the template argument as a type.
Definition at line 253 of file TemplateBase.h.
References clang::QualType::getFromOpaquePtr(), and TypeOrValue.
Referenced by addAssociatedClassesAndNamespaces(), clang::ASTWriter::AddTemplateArgument(), checkDeducedTemplateArguments(), clang::Sema::CheckTemplateArgument(), clang::Sema::CheckTemplateTypeArgument(), containsUnexpandedParameterPack(), DeduceTemplateArguments(), clang::ASTContext::getCanonicalTemplateArgument(), getPackExpansionPattern(), getTrivialTemplateArgumentLoc(), clang::ASTNodeImporter::ImportTemplateArgument(), clang::TemplateSpecializationTypeLoc::initializeArgLocs(), clang::TreeTransform< Derived >::InventTemplateArgumentLoc(), isDependent(), isInstantiationDependent(), isPackExpansion(), isSameTemplateArg(), clang::Sema::isStdInitializerList(), IsStructurallyEquivalent(), MarkUsedTemplateParameters(), clang::operator<<(), print(), Profile(), clang::TreeTransform< Derived >::TransformTemplateArgument(), clang::RecursiveASTVisitor< Derived >::TraverseTemplateArgument(), and clang::RecursiveASTVisitor< Derived >::TraverseTemplateArgumentLoc().
| QualType clang::TemplateArgument::getIntegralType | ( | ) | const [inline] |
Retrieve the type of the integral value.
Definition at line 300 of file TemplateBase.h.
References clang::QualType::getFromOpaquePtr(), Integer, and Integral.
Referenced by clang::ASTWriter::AddTemplateArgument(), clang::Sema::BuildExpressionFromIntegralTemplateArgument(), DeduceTemplateArguments(), clang::ASTContext::getCanonicalTemplateArgument(), clang::ASTNodeImporter::ImportTemplateArgument(), IsStructurallyEquivalent(), printIntegral(), Profile(), and structurallyEquals().
| ArgKind clang::TemplateArgument::getKind | ( | ) | const [inline] |
Return the kind of stored template argument.
Definition at line 231 of file TemplateBase.h.
Referenced by addAssociatedClassesAndNamespaces(), clang::ASTWriter::AddTemplateArgument(), clang::ASTWriter::AddTemplateArgumentLoc(), clang::Sema::BuildExpressionFromDeclTemplateArgument(), clang::Sema::BuildExpressionFromIntegralTemplateArgument(), checkDeducedTemplateArguments(), clang::Sema::CheckTemplateArgument(), clang::Sema::CheckTemplateTypeArgument(), containsUnexpandedParameterPack(), ConvertDeducedTemplateArgument(), DeduceTemplateArguments(), clang::ASTContext::getCanonicalTemplateArgument(), clang::TemplateArgumentLoc::getLocation(), getPackExpansionPattern(), clang::TemplateArgumentLoc::getPackExpansionPattern(), clang::TemplateArgumentLoc::getSourceDeclExpression(), clang::TemplateArgumentLoc::getSourceExpression(), clang::TemplateArgumentLoc::getSourceRange(), clang::TemplateArgumentLoc::getTemplateEllipsisLoc(), clang::TemplateArgumentLoc::getTemplateNameLoc(), clang::TemplateArgumentLoc::getTemplateQualifierLoc(), getTrivialTemplateArgumentLoc(), clang::TemplateArgumentLoc::getTypeSourceInfo(), hasTemplateArgumentForDeduction(), clang::ASTNodeImporter::ImportTemplateArgument(), clang::TemplateSpecializationTypeLoc::initializeArgLocs(), clang::TreeTransform< Derived >::InventTemplateArgumentLoc(), isDependent(), isInstantiationDependent(), isPackExpansion(), isSameTemplateArg(), IsStructurallyEquivalent(), MarkUsedTemplateParameters(), clang::operator<<(), print(), clang::ASTReader::ReadTemplateArgumentLoc(), clang::ASTReader::ReadTemplateName(), clang::TreeTransform< Derived >::RebuildPackExpansion(), structurallyEquals(), clang::Sema::SubstituteExplicitTemplateArguments(), clang::TemplateArgumentLoc::TemplateArgumentLoc(), clang::TreeTransform< Derived >::TransformTemplateArgument(), clang::TreeTransform< Derived >::TransformTemplateArguments(), clang::RecursiveASTVisitor< Derived >::TraverseTemplateArgument(), and clang::RecursiveASTVisitor< Derived >::TraverseTemplateArgumentLoc().
| llvm::Optional< unsigned > TemplateArgument::getNumTemplateExpansions | ( | ) | const |
Retrieve the number of expansions that a template template argument expansion will produce, if known.
Definition at line 207 of file TemplateBase.cpp.
References TemplateArg, and TemplateExpansion.
Referenced by clang::ASTWriter::AddTemplateArgument(), clang::ASTContext::getCanonicalTemplateArgument(), clang::TemplateArgumentLoc::getPackExpansionPattern(), and clang::ASTNodeImporter::ImportTemplateArgument().
| TemplateArgument TemplateArgument::getPackExpansionPattern | ( | ) | const |
When the template argument is a pack expansion, returns the pattern of the pack expansion.
| Ellipsis | Will be set to the location of the ellipsis. |
Definition at line 291 of file TemplateBase.cpp.
References Declaration, Expression, getAsExpr(), getAsTemplateOrTemplatePattern(), getAsType(), getKind(), Integral, isPackExpansion(), Null, Pack, Template, TemplateArgument(), and TemplateExpansion.
Referenced by DeduceTemplateArguments(), and clang::TemplateArgumentLoc::getPackExpansionPattern().
| bool TemplateArgument::isDependent | ( | ) | const |
Whether this template argument is dependent on a template parameter such that its result can change from one instantiation to another.
Definition at line 68 of file TemplateBase.cpp.
References Declaration, Expression, getAsDecl(), getAsExpr(), getAsTemplate(), getAsType(), getKind(), Integral, clang::TemplateName::isDependent(), Null, P, Pack, pack_begin(), pack_end(), Template, and TemplateExpansion.
| bool TemplateArgument::isInstantiationDependent | ( | ) | const |
Whether this template argument is dependent on a template parameter.
Definition at line 110 of file TemplateBase.cpp.
References Declaration, Expression, getAsDecl(), getAsExpr(), getAsTemplate(), getAsType(), getKind(), Integral, clang::Expr::isInstantiationDependent(), clang::TemplateName::isInstantiationDependent(), Null, P, Pack, pack_begin(), pack_end(), Template, and TemplateExpansion.
| bool clang::TemplateArgument::isNull | ( | ) | const [inline] |
Determine whether this template argument has no value.
Definition at line 234 of file TemplateBase.h.
References Null.
Referenced by checkDeducedTemplateArguments(), DeduceNonTypeTemplateArgument(), DeduceTemplateArguments(), clang::Sema::DeduceTemplateArguments(), DeduceTemplateArgumentsByTypeMatch(), clang::Sema::DiagnoseUnexpandedParameterPack(), FinishArgumentPackDeduction(), clang::Sema::FinishTemplateArgumentDeduction(), clang::TemplateTemplateParmDecl::hasDefaultArgument(), clang::ASTImporter::Import(), clang::ASTNodeImporter::ImportTemplateArguments(), and clang::TreeTransform< Derived >::TransformTemplateArguments().
| bool TemplateArgument::isPackExpansion | ( | ) | const |
Determine whether this template argument is a pack expansion.
Definition at line 151 of file TemplateBase.cpp.
References Declaration, Expression, getAsExpr(), getAsType(), getKind(), Integral, Null, Pack, Template, and TemplateExpansion.
Referenced by DeduceTemplateArguments(), getPackExpansionPattern(), clang::TemplateArgumentLoc::getPackExpansionPattern(), hasPackExpansionBeforeEnd(), and clang::TreeTransform< Derived >::TransformTemplateArguments().
| TemplateArgument& clang::TemplateArgument::operator= | ( | const TemplateArgument & | Other | ) | [inline] |
Definition at line 185 of file TemplateBase.h.
References Args, getAsIntegral(), Integer, Integral, NumArgs, Pack, Template, TemplateArg, TemplateExpansion, and TypeOrValue.
| pack_iterator clang::TemplateArgument::pack_begin | ( | ) | const [inline] |
Iterator referencing the first argument of a template argument pack.
Definition at line 326 of file TemplateBase.h.
Referenced by addAssociatedClassesAndNamespaces(), clang::ASTWriter::AddTemplateArgument(), checkDeducedTemplateArguments(), containsUnexpandedParameterPack(), ConvertDeducedTemplateArgument(), clang::ASTContext::getCanonicalTemplateArgument(), clang::ASTContext::getSubstTemplateTemplateParmPack(), clang::ASTContext::getSubstTemplateTypeParmPackType(), hasPackExpansionBeforeEnd(), hasTemplateArgumentForDeduction(), clang::ASTNodeImporter::ImportTemplateArgument(), isDependent(), isInstantiationDependent(), isSameTemplateArg(), IsStructurallyEquivalent(), MarkUsedTemplateParameters(), print(), clang::SubstTemplateTypeParmPackType::Profile(), clang::Sema::SubstituteExplicitTemplateArguments(), clang::TreeTransform< Derived >::TransformTemplateArgument(), clang::TreeTransform< Derived >::TransformTemplateArguments(), clang::RecursiveASTVisitor< Derived >::TraverseTemplateArgument(), and clang::RecursiveASTVisitor< Derived >::TraverseTemplateArgumentLoc().
| pack_iterator clang::TemplateArgument::pack_end | ( | ) | const [inline] |
Iterator referencing one past the last argument of a template argument pack.
Definition at line 333 of file TemplateBase.h.
References Args, NumArgs, and Pack.
Referenced by addAssociatedClassesAndNamespaces(), clang::ASTWriter::AddTemplateArgument(), checkDeducedTemplateArguments(), containsUnexpandedParameterPack(), ConvertDeducedTemplateArgument(), clang::ASTContext::getCanonicalTemplateArgument(), clang::ASTContext::getSubstTemplateTypeParmPackType(), isDependent(), isInstantiationDependent(), isSameTemplateArg(), MarkUsedTemplateParameters(), print(), clang::SubstTemplateTypeParmPackType::Profile(), clang::TreeTransform< Derived >::TransformTemplateArgument(), and clang::TreeTransform< Derived >::TransformTemplateArguments().
| unsigned clang::TemplateArgument::pack_size | ( | ) | const [inline] |
The number of template arguments in the given template argument pack.
Definition at line 340 of file TemplateBase.h.
References Args, NumArgs, and Pack.
Referenced by clang::ASTWriter::AddTemplateArgument(), checkDeducedTemplateArguments(), clang::ASTContext::getCanonicalTemplateArgument(), clang::ASTContext::getSubstTemplateTemplateParmPack(), hasPackExpansionBeforeEnd(), hasTemplateArgumentForDeduction(), clang::ASTNodeImporter::ImportTemplateArgument(), isSameTemplateArg(), IsStructurallyEquivalent(), clang::SubstTemplateTypeParmPackType::Profile(), clang::Sema::SubstituteExplicitTemplateArguments(), clang::TreeTransform< Derived >::TransformTemplateArgument(), clang::RecursiveASTVisitor< Derived >::TraverseTemplateArgument(), and clang::RecursiveASTVisitor< Derived >::TraverseTemplateArgumentLoc().
| void TemplateArgument::print | ( | const PrintingPolicy & | Policy, |
| raw_ostream & | Out | ||
| ) | const |
Print this template argument to the given output stream.
Definition at line 315 of file TemplateBase.cpp.
References Declaration, Expression, getAsDecl(), getAsExpr(), clang::QualType::getAsStringInternal(), getAsTemplate(), getAsTemplateOrTemplatePattern(), getAsType(), getKind(), Integral, Null, P, Pack, pack_begin(), pack_end(), clang::TemplateName::print(), printIntegral(), clang::Stmt::printPretty(), clang::PrintingPolicy::SuppressStrongLifetime, Template, and TemplateExpansion.
Referenced by clang::PredefinedExpr::ComputeName(), clang::Sema::getTemplateArgumentBindingsText(), clang::operator<<(), and clang::TemplateSpecializationType::PrintTemplateArgumentList().
| void TemplateArgument::Profile | ( | llvm::FoldingSetNodeID & | ID, |
| const ASTContext & | Context | ||
| ) | const |
Used to insert TemplateArguments into FoldingSets.
Definition at line 215 of file TemplateBase.cpp.
References Args, Declaration, Expression, getAsDecl(), getAsExpr(), getAsIntegral(), clang::TemplateName::getAsTemplateDecl(), getAsTemplateOrTemplatePattern(), getAsType(), clang::TemplateName::getAsVoidPointer(), clang::ASTContext::getCanonicalTemplateName(), getIntegralType(), Integral, Null, NumArgs, Pack, Profile(), clang::Stmt::Profile(), clang::QualType::Profile(), Template, and TemplateExpansion.
Referenced by clang::SubstTemplateTemplateParmPackStorage::Profile(), and Profile().
| void clang::TemplateArgument::setIntegralType | ( | QualType | T | ) | [inline] |
Definition at line 307 of file TemplateBase.h.
References clang::QualType::getAsOpaquePtr(), Integer, and Integral.
| bool TemplateArgument::structurallyEquals | ( | const TemplateArgument & | Other | ) | const |
Determines whether two template arguments are superficially the same.
Definition at line 264 of file TemplateBase.cpp.
References Args, Declaration, Expression, getAsIntegral(), getIntegralType(), getKind(), Integral, Null, NumArgs, Pack, structurallyEquals(), Template, TemplateExpansion, and TypeOrValue.
Referenced by structurallyEquals().
Definition at line 80 of file TemplateBase.h.
Referenced by operator=(), pack_begin(), pack_end(), pack_size(), Profile(), structurallyEquals(), and TemplateArgument().
| struct { ... } clang::TemplateArgument::Args |
| struct { ... } clang::TemplateArgument::Integer |
Referenced by getAsIntegral(), getIntegralType(), operator=(), setIntegralType(), and TemplateArgument().
Definition at line 84 of file TemplateBase.h.
| unsigned clang::TemplateArgument::NumArgs |
Definition at line 81 of file TemplateBase.h.
Referenced by operator=(), pack_end(), pack_size(), Profile(), structurallyEquals(), and TemplateArgument().
Definition at line 85 of file TemplateBase.h.
| struct { ... } clang::TemplateArgument::TemplateArg |
Referenced by getAsTemplate(), getAsTemplateOrTemplatePattern(), getNumTemplateExpansions(), operator=(), and TemplateArgument().
Definition at line 77 of file TemplateBase.h.
Referenced by addAssociatedClassesAndNamespaces(), clang::ASTWriter::AddTemplateArgument(), clang::ASTWriter::AddTemplateArgumentLocInfo(), checkDeducedTemplateArguments(), clang::Sema::CheckTemplateArgument(), clang::Sema::CheckTemplateTypeArgument(), DeduceTemplateArguments(), clang::ASTContext::getCanonicalTemplateArgument(), getLVForTemplateArgumentList(), clang::TemplateArgumentLoc::getPackExpansionPattern(), clang::TemplateArgumentLoc::getSourceRange(), clang::ASTContext::getSubstTemplateTypeParmPackType(), clang::ASTReader::GetTemplateArgumentLocInfo(), getTrivialTemplateArgumentLoc(), clang::TemplateArgumentLoc::getTypeSourceInfo(), clang::ASTNodeImporter::ImportTemplateArgument(), clang::TemplateSpecializationTypeLoc::initializeArgLocs(), clang::TreeTransform< Derived >::InventTemplateArgumentLoc(), isSameTemplateArg(), IsStructurallyEquivalent(), MarkUsedTemplateParameters(), clang::operator<<(), clang::ASTReader::ReadTemplateArgument(), clang::TreeTransform< Derived >::RebuildPackExpansion(), clang::TemplateArgumentLoc::TemplateArgumentLoc(), clang::TreeTransform< Derived >::TransformTemplateArgument(), clang::RecursiveASTVisitor< Derived >::TraverseTemplateArgument(), and clang::RecursiveASTVisitor< Derived >::TraverseTemplateArgumentLoc().
| uintptr_t clang::TemplateArgument::TypeOrValue |
Definition at line 74 of file TemplateBase.h.
Referenced by getAsDecl(), getAsExpr(), getAsType(), operator=(), structurallyEquals(), and TemplateArgument().
| char clang::TemplateArgument::Value[sizeof(llvm::APSInt)] |
Definition at line 76 of file TemplateBase.h.