class ClassTemplateDecl
Declaration
class ClassTemplateDecl : public RedeclarableTemplateDecl { /* full declaration omitted */ };
Description
Declaration of a class template.
Declared at: clang/include/clang/AST/DeclTemplate.h:2273
Inherits from: RedeclarableTemplateDecl
Member Variables
Inherited from RedeclarableTemplateDecl:
- protected Common = nullptr
Inherited from TemplateDecl:
Inherited from Decl:
- protected NextInContextAndBits
- protected Access
- protected FromASTFile
- protected IdentifierNamespace
- protected CacheValidAndLinkage
Method Overview
- public void AddPartialSpecialization(clang::ClassTemplatePartialSpecializationDecl * D, void * InsertPos)
- public void AddSpecialization(clang::ClassTemplateSpecializationDecl * D, void * InsertPos)
- protected ClassTemplateDecl(clang::ASTContext & C, clang::DeclContext * DC, clang::SourceLocation L, clang::DeclarationName Name, clang::TemplateParameterList * Params, clang::NamedDecl * Decl)
- public static clang::ClassTemplateDecl * Create(clang::ASTContext & C, clang::DeclContext * DC, clang::SourceLocation L, clang::DeclarationName Name, clang::TemplateParameterList * Params, clang::NamedDecl * Decl)
- public static clang::ClassTemplateDecl * CreateDeserialized(clang::ASTContext & C, unsigned int ID)
- public void LoadLazySpecializations() const
- public static bool classof(const clang::Decl * D)
- public static bool classofKind(clang::Decl::Kind K)
- public clang::ClassTemplatePartialSpecializationDecl * findPartialSpecInstantiatedFromMember(clang::ClassTemplatePartialSpecializationDecl * D)
- public clang::ClassTemplatePartialSpecializationDecl * findPartialSpecialization(clang::QualType T)
- public clang::ClassTemplatePartialSpecializationDecl * findPartialSpecialization(ArrayRef<clang::TemplateArgument> Args, clang::TemplateParameterList * TPL, void *& InsertPos)
- public clang::ClassTemplateSpecializationDecl * findSpecialization(ArrayRef<clang::TemplateArgument> Args, void *& InsertPos)
- public clang::ClassTemplateDecl * getCanonicalDecl()
- public const clang::ClassTemplateDecl * getCanonicalDecl() const
- protected clang::ClassTemplateDecl::Common * getCommonPtr() const
- public clang::QualType getInjectedClassNameSpecialization()
- public clang::ClassTemplateDecl * getInstantiatedFromMemberTemplate() const
- public clang::ClassTemplateDecl * getMostRecentDecl()
- public const clang::ClassTemplateDecl * getMostRecentDecl() const
- public void getPartialSpecializations(SmallVectorImpl<clang::ClassTemplatePartialSpecializationDecl *> & PS) const
- protected llvm::FoldingSetVector<ClassTemplatePartialSpecializationDecl> & getPartialSpecializations() const
- public const clang::ClassTemplateDecl * getPreviousDecl() const
- public clang::ClassTemplateDecl * getPreviousDecl()
- protected llvm::FoldingSetVector<ClassTemplateSpecializationDecl> & getSpecializations() const
- public clang::CXXRecordDecl * getTemplatedDecl() const
- public bool isThisDeclarationADefinition() const
- protected clang::RedeclarableTemplateDecl::CommonBase * newCommon(clang::ASTContext & C) const
- public clang::ClassTemplateDecl::spec_iterator spec_begin() const
- public clang::ClassTemplateDecl::spec_iterator spec_end() const
- public clang::ClassTemplateDecl::spec_range specializations() const
Inherited from RedeclarableTemplateDecl:
- protected addSpecializationImpl
- public classof
- public classofKind
- protected findSpecializationImpl
- public getCanonicalDecl
- public getCanonicalDecl
- protected getCommonPtr
- public getInstantiatedFromMemberTemplate
- public isMemberSpecialization
- protected loadLazySpecializationsImpl
- protected makeSpecIterator
- protected newCommon
- public setInstantiatedFromMemberTemplate
- public setMemberSpecialization
Inherited from TemplateDecl:
- public classof
- public classofKind
- public getAssociatedConstraints
- public getSourceRange
- public getTemplateParameters
- public getTemplatedDecl
- public hasAssociatedConstraints
- public init
- protected setTemplateParameters
Inherited from NamedDecl:
- public classof
- public classofKind
- public declarationReplaces
- public getDeclName
- public getExplicitVisibility
- public getFormalLinkage
- public getIdentifier
- public getLinkageAndVisibility
- public getLinkageInternal
- public getMostRecentDecl
- public getMostRecentDecl
- public getName
- public getNameAsString
- public getNameForDiagnostic
- public getObjCFStringFormattingFamily
- public getQualifiedNameAsString
- public getUnderlyingDecl
- public getUnderlyingDecl
- public getVisibility
- public hasExternalFormalLinkage
- public hasLinkage
- public hasLinkageBeenComputed
- public isCXXClassMember
- public isCXXInstanceMember
- public isExternallyDeclarable
- public isExternallyVisible
- public isLinkageValid
- public isReserved
- public printName
- public printNestedNameSpecifier
- public printNestedNameSpecifier
- public printQualifiedName
- public printQualifiedName
- public setDeclName
Inherited from Decl:
- public EnableStatistics
- public PrintStats
- public add
- public addAttr
- public attr_begin
- public attr_end
- public attrs
- public canBeWeakImported
- public castFromDeclContext
- public castToDeclContext
- public classofKind
- public dropAttr
- public dropAttrs
- public dump
- public dump
- public dumpColor
- public getASTContext
- protected getASTMutationListener
- public getAccess
- public getAccessUnsafe
- public getAsFunction
- public getAsFunction
- public getAttr
- public getAttrs
- public getAttrs
- public getAvailability
- public getBeginLoc
- public getBody
- public getBodyRBrace
- protected getCachedLinkage
- public getCanonicalDecl
- public getCanonicalDecl
- public getDeclContext
- public getDeclContext
- public getDeclKindName
- public getDefiningAttr
- public getDescribedTemplate
- public getDescribedTemplateParams
- public getEndLoc
- public getExternalSourceSymbolAttr
- public getFriendObjectKind
- public getFunctionType
- public getGlobalID
- public getID
- public getIdentifierNamespace
- public getIdentifierNamespaceForKind
- public getImportedOwningModule
- public getKind
- public getLangOpts
- public getLexicalDeclContext
- public getLexicalDeclContext
- public getLocalOwningModule
- public getLocation
- public getMaxAlignment
- public getModuleOwnershipKind
- public getMostRecentDecl
- public getMostRecentDecl
- protected getMostRecentDeclImpl
- public getNextDeclInContext
- public getNextDeclInContext
- protected getNextRedeclarationImpl
- public getNonClosureContext
- public getNonClosureContext
- public getOwningModule
- public getOwningModuleForLinkage
- public getOwningModuleID
- public getParentFunctionOrMethod
- public getParentFunctionOrMethod
- public getPreviousDecl
- public getPreviousDecl
- protected getPreviousDeclImpl
- public getSourceRange
- public getTemplateDepth
- public getTranslationUnitDecl
- public getTranslationUnitDecl
- public getVersionIntroduced
- public hasAttr
- public hasAttrs
- public hasBody
- protected hasCachedLinkage
- public hasDefiningAttr
- protected hasLocalOwningModuleStorage
- public hasOwningModule
- public hasTagIdentifierNamespace
- public isCanonicalDecl
- public isDefinedOutsideFunctionOrMethod
- public isDeprecated
- public isDiscardedInGlobalModuleFragment
- public isFirstDecl
- public isFromASTFile
- public isFunctionOrFunctionTemplate
- public isImplicit
- public isInAnonymousNamespace
- public isInExportDeclContext
- public isInIdentifierNamespace
- public isInLocalScopeForInstantiation
- public isInStdNamespace
- public isInvalidDecl
- public isInvisibleOutsideTheOwningModule
- public isLocalExternDecl
- public isModulePrivate
- public isOutOfLine
- public isParameterPack
- public isReachable
- public isReferenced
- public isTagIdentifierNamespace
- public isTemplateDecl
- public isTemplateParameter
- public isTemplateParameterPack
- public isTemplated
- public isThisDeclarationReferenced
- public isTopLevelDeclInObjCContainer
- public isUnavailable
- public isUnconditionallyVisible
- public isUsed
- public isWeakImported
- public markUsed
- public print
- public print
- public printGroup
- public redecls
- public redecls_begin
- public redecls_end
- public setAccess
- public setAttrs
- protected setCachedLinkage
- public setDeclContext
- public setFromASTFile
- public setImplicit
- public setInvalidDecl
- public setIsUsed
- public setLexicalDeclContext
- public setLocalExternDecl
- public setLocalOwningModule
- public setLocation
- public setModuleOwnershipKind
- protected setModulePrivate
- public setNonMemberOperator
- public setObjectOfFriendDecl
- public setOwningModuleID
- public setReferenced
- public setTopLevelDeclInObjCContainer
- public setVisibleDespiteOwningModule
- public specific_attr_begin
- public specific_attr_end
- public specific_attrs
- protected updateOutOfDate
Methods
¶void AddPartialSpecialization(
clang::ClassTemplatePartialSpecializationDecl*
D,
void* InsertPos)
void AddPartialSpecialization(
clang::ClassTemplatePartialSpecializationDecl*
D,
void* InsertPos)
Description
Insert the specified partial specialization knowing that it is not already in. InsertPos must be obtained from findPartialSpecialization.
Declared at: clang/include/clang/AST/DeclTemplate.h:2392
Parameters
- clang::ClassTemplatePartialSpecializationDecl* D
- void* InsertPos
¶void AddSpecialization(
clang::ClassTemplateSpecializationDecl* D,
void* InsertPos)
void AddSpecialization(
clang::ClassTemplateSpecializationDecl* D,
void* InsertPos)
Description
Insert the specified specialization knowing that it is not already in. InsertPos must be obtained from findSpecialization.
Declared at: clang/include/clang/AST/DeclTemplate.h:2348
Parameters
- clang::ClassTemplateSpecializationDecl* D
- void* InsertPos
¶ClassTemplateDecl(
clang::ASTContext& C,
clang::DeclContext* DC,
clang::SourceLocation L,
clang::DeclarationName Name,
clang::TemplateParameterList* Params,
clang::NamedDecl* Decl)
ClassTemplateDecl(
clang::ASTContext& C,
clang::DeclContext* DC,
clang::SourceLocation L,
clang::DeclarationName Name,
clang::TemplateParameterList* Params,
clang::NamedDecl* Decl)
Declared at: clang/include/clang/AST/DeclTemplate.h:2302
Parameters
- clang::ASTContext& C
- clang::DeclContext* DC
- clang::SourceLocation L
- clang::DeclarationName Name
- clang::TemplateParameterList* Params
- clang::NamedDecl* Decl
¶static clang::ClassTemplateDecl* Create(
clang::ASTContext& C,
clang::DeclContext* DC,
clang::SourceLocation L,
clang::DeclarationName Name,
clang::TemplateParameterList* Params,
clang::NamedDecl* Decl)
static clang::ClassTemplateDecl* Create(
clang::ASTContext& C,
clang::DeclContext* DC,
clang::SourceLocation L,
clang::DeclarationName Name,
clang::TemplateParameterList* Params,
clang::NamedDecl* Decl)
Description
Create a class template node.
Declared at: clang/include/clang/AST/DeclTemplate.h:2332
Parameters
- clang::ASTContext& C
- clang::DeclContext* DC
- clang::SourceLocation L
- clang::DeclarationName Name
- clang::TemplateParameterList* Params
- clang::NamedDecl* Decl
¶static clang::ClassTemplateDecl*
CreateDeserialized(clang::ASTContext& C,
unsigned int ID)
static clang::ClassTemplateDecl*
CreateDeserialized(clang::ASTContext& C,
unsigned int ID)
Description
Create an empty class template node.
Declared at: clang/include/clang/AST/DeclTemplate.h:2339
Parameters
- clang::ASTContext& C
- unsigned int ID
¶void LoadLazySpecializations() const
void LoadLazySpecializations() const
Description
Load any lazily-loaded specializations from the external source.
Declared at: clang/include/clang/AST/DeclTemplate.h:2318
¶static bool classof(const clang::Decl* D)
static bool classof(const clang::Decl* D)
Declared at: clang/include/clang/AST/DeclTemplate.h:2453
Parameters
- const clang::Decl* D
¶static bool classofKind(clang::Decl::Kind K)
static bool classofKind(clang::Decl::Kind K)
Declared at: clang/include/clang/AST/DeclTemplate.h:2454
Parameters
- clang::Decl::Kind K
¶clang::ClassTemplatePartialSpecializationDecl*
findPartialSpecInstantiatedFromMember(
clang::ClassTemplatePartialSpecializationDecl*
D)
clang::ClassTemplatePartialSpecializationDecl*
findPartialSpecInstantiatedFromMember(
clang::ClassTemplatePartialSpecializationDecl*
D)
Description
Find a class template partial specialization which was instantiated from the given member partial specialization.
Declared at: clang/include/clang/AST/DeclTemplate.h:2418
Parameters
- clang::ClassTemplatePartialSpecializationDecl* D
- a member class template partial specialization.
Returns
the class template partial specialization which was instantiated from the given member partial specialization, or nullptr if no such partial specialization exists.
¶clang::ClassTemplatePartialSpecializationDecl*
findPartialSpecialization(clang::QualType T)
clang::ClassTemplatePartialSpecializationDecl*
findPartialSpecialization(clang::QualType T)
Description
Find a class template partial specialization with the given type T.
Declared at: clang/include/clang/AST/DeclTemplate.h:2407
Parameters
- clang::QualType T
- a dependent type that names a specialization of this class template.
Returns
the class template partial specialization that exactly matches the type \p T, or nullptr if no such partial specialization exists.
¶clang::ClassTemplatePartialSpecializationDecl*
findPartialSpecialization(
ArrayRef<clang::TemplateArgument> Args,
clang::TemplateParameterList* TPL,
void*& InsertPos)
clang::ClassTemplatePartialSpecializationDecl*
findPartialSpecialization(
ArrayRef<clang::TemplateArgument> Args,
clang::TemplateParameterList* TPL,
void*& InsertPos)
Description
Return the partial specialization with the provided arguments if it exists, otherwise return the insertion point.
Declared at: clang/include/clang/AST/DeclTemplate.h:2387
Parameters
- ArrayRef<clang::TemplateArgument> Args
- clang::TemplateParameterList* TPL
- void*& InsertPos
¶clang::ClassTemplateSpecializationDecl*
findSpecialization(
ArrayRef<clang::TemplateArgument> Args,
void*& InsertPos)
clang::ClassTemplateSpecializationDecl*
findSpecialization(
ArrayRef<clang::TemplateArgument> Args,
void*& InsertPos)
Description
Return the specialization with the provided arguments if it exists, otherwise return the insertion point.
Declared at: clang/include/clang/AST/DeclTemplate.h:2344
Parameters
- ArrayRef<clang::TemplateArgument> Args
- void*& InsertPos
¶clang::ClassTemplateDecl* getCanonicalDecl()
clang::ClassTemplateDecl* getCanonicalDecl()
Description
Retrieves the canonical declaration of this template.
Declared at: clang/include/clang/AST/DeclTemplate.h:2350
¶const clang::ClassTemplateDecl* getCanonicalDecl()
const
const clang::ClassTemplateDecl* getCanonicalDecl()
const
Declared at: clang/include/clang/AST/DeclTemplate.h:2354
¶clang::ClassTemplateDecl::Common* getCommonPtr()
const
clang::ClassTemplateDecl::Common* getCommonPtr()
const
Declared at: clang/include/clang/AST/DeclTemplate.h:2309
¶clang::QualType
getInjectedClassNameSpecialization()
clang::QualType
getInjectedClassNameSpecialization()
Description
Retrieve the template specialization type of the injected-class-name for this class template. The injected-class-name for a class template \c X is \c X<template-args>, where \c template-args is formed from the template arguments that correspond to the template parameters of\c X. For example:
Declared at: clang/include/clang/AST/DeclTemplate.h:2435
¶clang::ClassTemplateDecl*
getInstantiatedFromMemberTemplate() const
clang::ClassTemplateDecl*
getInstantiatedFromMemberTemplate() const
Declared at: clang/include/clang/AST/DeclTemplate.h:2379
¶clang::ClassTemplateDecl* getMostRecentDecl()
clang::ClassTemplateDecl* getMostRecentDecl()
Declared at: clang/include/clang/AST/DeclTemplate.h:2371
¶const clang::ClassTemplateDecl*
getMostRecentDecl() const
const clang::ClassTemplateDecl*
getMostRecentDecl() const
Declared at: clang/include/clang/AST/DeclTemplate.h:2375
¶void getPartialSpecializations(
SmallVectorImpl<
clang::
ClassTemplatePartialSpecializationDecl*>&
PS) const
void getPartialSpecializations(
SmallVectorImpl<
clang::
ClassTemplatePartialSpecializationDecl*>&
PS) const
Description
Retrieve the partial specializations as an ordered list.
Declared at: clang/include/clang/AST/DeclTemplate.h:2396
Parameters
- SmallVectorImpl< clang:: ClassTemplatePartialSpecializationDecl*>& PS
¶llvm::FoldingSetVector<
ClassTemplatePartialSpecializationDecl>&
getPartialSpecializations() const
llvm::FoldingSetVector<
ClassTemplatePartialSpecializationDecl>&
getPartialSpecializations() const
Description
Retrieve the set of partial specializations of this class template.
Declared at: clang/include/clang/AST/DeclTemplate.h:2300
¶const clang::ClassTemplateDecl* getPreviousDecl()
const
const clang::ClassTemplateDecl* getPreviousDecl()
const
Declared at: clang/include/clang/AST/DeclTemplate.h:2365
¶clang::ClassTemplateDecl* getPreviousDecl()
clang::ClassTemplateDecl* getPreviousDecl()
Description
Retrieve the previous declaration of this class template, or nullptr if no such declaration exists.
Declared at: clang/include/clang/AST/DeclTemplate.h:2361
¶llvm::FoldingSetVector<
ClassTemplateSpecializationDecl>&
getSpecializations() const
llvm::FoldingSetVector<
ClassTemplateSpecializationDecl>&
getSpecializations() const
Description
Retrieve the set of specializations of this class template.
Declared at: clang/include/clang/AST/DeclTemplate.h:2295
¶clang::CXXRecordDecl* getTemplatedDecl() const
clang::CXXRecordDecl* getTemplatedDecl() const
Description
Get the underlying class declarations of the template.
Declared at: clang/include/clang/AST/DeclTemplate.h:2321
¶bool isThisDeclarationADefinition() const
bool isThisDeclarationADefinition() const
Description
Returns whether this template declaration defines the primary class pattern.
Declared at: clang/include/clang/AST/DeclTemplate.h:2327
¶clang::RedeclarableTemplateDecl::CommonBase*
newCommon(clang::ASTContext& C) const
clang::RedeclarableTemplateDecl::CommonBase*
newCommon(clang::ASTContext& C) const
Declared at: clang/include/clang/AST/DeclTemplate.h:2307
Parameters
¶clang::ClassTemplateDecl::spec_iterator
spec_begin() const
clang::ClassTemplateDecl::spec_iterator
spec_begin() const
Declared at: clang/include/clang/AST/DeclTemplate.h:2444
¶clang::ClassTemplateDecl::spec_iterator spec_end()
const
clang::ClassTemplateDecl::spec_iterator spec_end()
const
Declared at: clang/include/clang/AST/DeclTemplate.h:2448
¶clang::ClassTemplateDecl::spec_range
specializations() const
clang::ClassTemplateDecl::spec_range
specializations() const
Declared at: clang/include/clang/AST/DeclTemplate.h:2440