clang
3.9.0
|
TemplateTemplateParmDecl - Declares a template template parameter, e.g., "T" in. More...
#include <DeclTemplate.h>
Public Member Functions | |
bool | isParameterPack () const |
Whether this template template parameter is a template parameter pack. More... | |
bool | isPackExpansion () const |
Whether this parameter pack is a pack expansion. More... | |
bool | isExpandedParameterPack () const |
Whether this parameter is a template template parameter pack that has a known list of different template parameter lists at different positions. More... | |
unsigned | getNumExpansionTemplateParameters () const |
Retrieves the number of expansion template parameters in an expanded parameter pack. More... | |
TemplateParameterList * | getExpansionTemplateParameters (unsigned I) const |
Retrieve a particular expansion type within an expanded parameter pack. More... | |
const DefArgStorage & | getDefaultArgStorage () const |
bool | hasDefaultArgument () const |
Determine whether this template parameter has a default argument. More... | |
const TemplateArgumentLoc & | getDefaultArgument () const |
Retrieve the default argument, if any. More... | |
SourceLocation | getDefaultArgumentLoc () const |
Retrieve the location of the default argument, if any. More... | |
bool | defaultArgumentWasInherited () const |
Determines whether the default argument was inherited from a previous declaration of this template. More... | |
void | setDefaultArgument (const ASTContext &C, const TemplateArgumentLoc &DefArg) |
Set the default argument for this template parameter, and whether that default argument was inherited from another declaration. More... | |
void | setInheritedDefaultArgument (const ASTContext &C, TemplateTemplateParmDecl *Prev) |
void | removeDefaultArgument () |
Removes the default argument of this template parameter. More... | |
SourceRange | getSourceRange () const override LLVM_READONLY |
![]() | |
TemplateParameterList * | getTemplateParameters () const |
Get the list of template parameters. More... | |
NamedDecl * | getTemplatedDecl () const |
Get the underlying, templated declaration. More... | |
SourceRange | getSourceRange () const override LLVM_READONLY |
bool | isConcept () const |
Whether this is a (C++ Concepts TS) function or variable concept. More... | |
void | setConcept () |
void | init (NamedDecl *templatedDecl, TemplateParameterList *templateParams) |
Initialize the underlying templated declaration and template parameters. More... | |
![]() | |
IdentifierInfo * | getIdentifier () const |
getIdentifier - Get the identifier that names this declaration, if there is one. More... | |
StringRef | getName () const |
getName - Get the name of identifier for this declaration as a StringRef. More... | |
std::string | getNameAsString () const |
getNameAsString - Get a human-readable name for the declaration, even if it is one of the special kinds of names (C++ constructor, Objective-C selector, etc). More... | |
void | printName (raw_ostream &os) const |
DeclarationName | getDeclName () const |
getDeclName - Get the actual, stored name of the declaration, which may be a special name. More... | |
void | setDeclName (DeclarationName N) |
Set the name of this declaration. More... | |
void | printQualifiedName (raw_ostream &OS) const |
printQualifiedName - Returns human-readable qualified name for declaration, like A::B::i, for i being member of namespace A::B. More... | |
void | printQualifiedName (raw_ostream &OS, const PrintingPolicy &Policy) const |
std::string | getQualifiedNameAsString () const |
virtual void | getNameForDiagnostic (raw_ostream &OS, const PrintingPolicy &Policy, bool Qualified) const |
getNameForDiagnostic - Appends a human-readable name for this declaration into the given stream. More... | |
bool | declarationReplaces (NamedDecl *OldD, bool IsKnownNewer=true) const |
Determine whether this declaration, if known to be well-formed within its context, will replace the declaration OldD if introduced into scope. More... | |
bool | hasLinkage () const |
Determine whether this declaration has linkage. More... | |
bool | isHidden () const |
Determine whether this declaration is hidden from name lookup. More... | |
void | setHidden (bool Hide) |
Set whether this declaration is hidden from name lookup. More... | |
bool | isCXXClassMember () const |
Determine whether this declaration is a C++ class member. More... | |
bool | isCXXInstanceMember () const |
Determine whether the given declaration is an instance member of a C++ class. More... | |
Linkage | getLinkageInternal () const |
Determine what kind of linkage this entity has. More... | |
Linkage | getFormalLinkage () const |
Get the linkage from a semantic point of view. More... | |
bool | hasExternalFormalLinkage () const |
True if this decl has external linkage. More... | |
bool | isExternallyVisible () const |
Visibility | getVisibility () const |
Determines the visibility of this entity. More... | |
LinkageInfo | getLinkageAndVisibility () const |
Determines the linkage and visibility of this entity. More... | |
Optional< Visibility > | getExplicitVisibility (ExplicitVisibilityKind kind) const |
If visibility was explicitly specified for this declaration, return that visibility. More... | |
bool | isLinkageValid () const |
True if the computed linkage is valid. More... | |
bool | hasLinkageBeenComputed () const |
True if something has required us to compute the linkage of this declaration. More... | |
NamedDecl * | getUnderlyingDecl () |
Looks through UsingDecls and ObjCCompatibleAliasDecls for the underlying named decl. More... | |
const NamedDecl * | getUnderlyingDecl () const |
NamedDecl * | getMostRecentDecl () |
const NamedDecl * | getMostRecentDecl () const |
ObjCStringFormatFamily | getObjCFStringFormattingFamily () const |
Static Public Member Functions | |
static TemplateTemplateParmDecl * | Create (const ASTContext &C, DeclContext *DC, SourceLocation L, unsigned D, unsigned P, bool ParameterPack, IdentifierInfo *Id, TemplateParameterList *Params) |
static TemplateTemplateParmDecl * | Create (const ASTContext &C, DeclContext *DC, SourceLocation L, unsigned D, unsigned P, IdentifierInfo *Id, TemplateParameterList *Params, ArrayRef< TemplateParameterList * > Expansions) |
static TemplateTemplateParmDecl * | CreateDeserialized (ASTContext &C, unsigned ID) |
static TemplateTemplateParmDecl * | CreateDeserialized (ASTContext &C, unsigned ID, unsigned NumExpansions) |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
![]() | |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
![]() | |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
Public Attributes | |
friend | TrailingObjects |
Friends | |
class | ASTDeclReader |
class | ASTDeclWriter |
Additional Inherited Members | |
![]() | |
enum | ExplicitVisibilityKind { VisibilityForType, VisibilityForValue } |
Kinds of explicit visibility. More... | |
![]() | |
TemplateDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName Name) | |
TemplateDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName Name, TemplateParameterList *Params) | |
TemplateDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName Name, TemplateParameterList *Params, NamedDecl *Decl) | |
![]() | |
NamedDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName N) | |
![]() | |
TemplateParmPosition (unsigned D, unsigned P) | |
unsigned | getDepth () const |
Get the nesting depth of the template parameter. More... | |
void | setDepth (unsigned D) |
unsigned | getPosition () const |
Get the position of the template parameter within its parameter list. More... | |
void | setPosition (unsigned P) |
unsigned | getIndex () const |
Get the index of the template parameter within its parameter list. More... | |
![]() | |
llvm::PointerIntPair < NamedDecl *, 1, bool > | TemplatedDecl |
The named declaration from which this template was instantiated. More... | |
TemplateParameterList * | TemplateParams |
![]() | |
unsigned | Depth |
unsigned | Position |
TemplateTemplateParmDecl - Declares a template template parameter, e.g., "T" in.
A template template parameter is a TemplateDecl because it defines the name of a template and the template parameters allowable for substitution.
Definition at line 1327 of file DeclTemplate.h.
Definition at line 1479 of file DeclTemplate.h.
Definition at line 1480 of file DeclTemplate.h.
|
static |
Definition at line 611 of file DeclTemplate.cpp.
Referenced by clang::Sema::ActOnTemplateTemplateParameter(), createMakeIntegerSeqParameterList(), and clang::ASTNodeImporter::VisitTemplateTemplateParmDecl().
|
static |
Definition at line 620 of file DeclTemplate.cpp.
|
static |
Definition at line 631 of file DeclTemplate.cpp.
References ID.
|
static |
Definition at line 637 of file DeclTemplate.cpp.
References ID, and clang::None.
|
inline |
Determines whether the default argument was inherited from a previous declaration of this template.
Definition at line 1454 of file DeclTemplate.h.
Referenced by clang::ASTDeclWriter::VisitTemplateTemplateParmDecl().
|
inline |
Definition at line 1437 of file DeclTemplate.h.
|
inline |
Retrieve the default argument, if any.
Definition at line 1444 of file DeclTemplate.h.
References clang::None.
Referenced by clang::Sema::ActOnClassTemplateSpecialization(), clang::Sema::CheckTemplateArgumentList(), clang::Sema::CheckTemplateParameterList(), getDefaultArgumentLoc(), SubstDefaultTemplateArgument(), clang::Sema::SubstDefaultTemplateArgumentIfAvailable(), and clang::ASTDeclWriter::VisitTemplateTemplateParmDecl().
SourceLocation TemplateTemplateParmDecl::getDefaultArgumentLoc | ( | ) | const |
Retrieve the location of the default argument, if any.
Definition at line 647 of file DeclTemplate.cpp.
References getDefaultArgument(), clang::TemplateArgumentLoc::getLocation(), and hasDefaultArgument().
|
inline |
Retrieve a particular expansion type within an expanded parameter pack.
Definition at line 1432 of file DeclTemplate.h.
Referenced by clang::Sema::CheckTemplateArgument(), and clang::ASTDeclWriter::VisitTemplateTemplateParmDecl().
|
inline |
Retrieves the number of expansion template parameters in an expanded parameter pack.
Definition at line 1425 of file DeclTemplate.h.
Referenced by clang::ASTDeclWriter::VisitTemplateTemplateParmDecl(), and clang::ASTDeclReader::VisitTemplateTemplateParmDecl().
|
inlineoverride |
Definition at line 1471 of file DeclTemplate.h.
References End.
|
inline |
Determine whether this template parameter has a default argument.
Definition at line 1441 of file DeclTemplate.h.
Referenced by clang::Sema::ActOnClassTemplateSpecialization(), AddTemplateParameterChunks(), clang::Sema::CheckTemplateParameterList(), getDefaultArgumentLoc(), and clang::ASTDeclWriter::VisitTemplateTemplateParmDecl().
|
inline |
Whether this parameter is a template template parameter pack that has a known list of different template parameter lists at different positions.
A parameter pack is an expanded parameter pack when the original parameter pack's template parameter list was itself a pack expansion, and that expansion has already been expanded. For exampe, given:
The parameter pack Templates
is a pack expansion, which expands the pack Types
. When Types
is supplied with template arguments by instantiating Outer
, the instantiation of Templates
is an expanded parameter pack.
Definition at line 1421 of file DeclTemplate.h.
Referenced by clang::Sema::CheckTemplateArgument(), clang::ASTDeclWriter::VisitTemplateTemplateParmDecl(), and clang::ASTDeclReader::VisitTemplateTemplateParmDecl().
|
inline |
Whether this parameter pack is a pack expansion.
A template template parameter pack is a pack expansion if its template parameter list contains an unexpanded parameter pack.
Definition at line 1398 of file DeclTemplate.h.
Referenced by clang::Sema::CheckTemplateParameterList().
|
inline |
Whether this template template parameter is a template parameter pack.
Definition at line 1392 of file DeclTemplate.h.
Referenced by clang::Sema::CheckTemplateParameterList(), DiagnoseUnexpandedParameterPacks(), isSameTemplateParameter(), IsStructurallyEquivalent(), clang::ASTDeclWriter::VisitTemplateTemplateParmDecl(), and clang::ASTNodeImporter::VisitTemplateTemplateParmDecl().
|
inline |
Removes the default argument of this template parameter.
Definition at line 1469 of file DeclTemplate.h.
Referenced by clang::Sema::ActOnClassTemplateSpecialization(), and clang::Sema::CheckTemplateParameterList().
void TemplateTemplateParmDecl::setDefaultArgument | ( | const ASTContext & | C, |
const TemplateArgumentLoc & | DefArg | ||
) |
Set the default argument for this template parameter, and whether that default argument was inherited from another declaration.
Definition at line 652 of file DeclTemplate.cpp.
References clang::TemplateArgumentLoc::getArgument(), clang::TemplateArgument::isNull(), and clang::DefaultArgStorage< ParmDecl, ArgType >::set().
Referenced by clang::Sema::ActOnTemplateTemplateParameter(), and clang::ASTDeclReader::VisitTemplateTemplateParmDecl().
|
inline |
Definition at line 1463 of file DeclTemplate.h.
Referenced by clang::Sema::CheckTemplateParameterList().
|
friend |
Definition at line 1482 of file DeclTemplate.h.
|
friend |
Definition at line 1483 of file DeclTemplate.h.
friend clang::TemplateTemplateParmDecl::TrailingObjects |
Definition at line 1484 of file DeclTemplate.h.