class VarTemplatePartialSpecializationDecl

Declaration

class VarTemplatePartialSpecializationDecl
    : public VarTemplateSpecializationDecl { /* full declaration omitted */ };

Description

Represents a variable template specialization, which refers to a variable template with a given set of template arguments. Variable template specializations represent both explicit specializations of variable templates, as in the example below, and implicit instantiations of variable templates.

Declared at: clang/include/clang/AST/DeclTemplate.h:2952

Inherits from: VarTemplateSpecializationDecl

Member Variables

private clang::TemplateParameterList* TemplateParams = nullptr
The list of template parameters
private const clang::ASTTemplateArgumentListInfo* ArgsAsWritten = nullptr
The source info for the template arguments as written. FIXME: redundant with TypeAsWritten?
private llvm::PointerIntPair< VarTemplatePartialSpecializationDecl*, 1, bool> InstantiatedFromMember
The boolean value will be true to indicate that this variable template partial specialization was specialized at this level.

Inherited from VarDecl:

protected Init
protected

Inherited from Decl:

protected NextInContextAndBits
protected Access
protected FromASTFile
protected IdentifierNamespace
protected CacheValidAndLinkage

Method Overview

  • public static clang::VarTemplatePartialSpecializationDecl * Create(clang::ASTContext & Context, clang::DeclContext * DC, clang::SourceLocation StartLoc, clang::SourceLocation IdLoc, clang::TemplateParameterList * Params, clang::VarTemplateDecl * SpecializedTemplate, clang::QualType T, clang::TypeSourceInfo * TInfo, clang::StorageClass S, ArrayRef<clang::TemplateArgument> Args, const clang::TemplateArgumentListInfo & ArgInfos)
  • public static clang::VarTemplatePartialSpecializationDecl * CreateDeserialized(clang::ASTContext & C, unsigned int ID)
  • public static void Profile(llvm::FoldingSetNodeID & ID, ArrayRef<clang::TemplateArgument> TemplateArgs, clang::TemplateParameterList * TPL, clang::ASTContext & Context)
  • public void Profile(llvm::FoldingSetNodeID & ID) const
  • private VarTemplatePartialSpecializationDecl(clang::ASTContext & Context)
  • private VarTemplatePartialSpecializationDecl(clang::ASTContext & Context, clang::DeclContext * DC, clang::SourceLocation StartLoc, clang::SourceLocation IdLoc, clang::TemplateParameterList * Params, clang::VarTemplateDecl * SpecializedTemplate, clang::QualType T, clang::TypeSourceInfo * TInfo, clang::StorageClass S, ArrayRef<clang::TemplateArgument> Args, const clang::ASTTemplateArgumentListInfo * ArgInfos)
  • private void anchor()
  • public static bool classof(const clang::Decl * D)
  • public static bool classofKind(clang::Decl::Kind K)
  • public void getAssociatedConstraints(llvm::SmallVectorImpl<const Expr *> & AC) const
  • public clang::VarTemplatePartialSpecializationDecl * getInstantiatedFromMember() const
  • public clang::VarTemplatePartialSpecializationDecl * getMostRecentDecl()
  • public const clang::ASTTemplateArgumentListInfo * getTemplateArgsAsWritten() const
  • public clang::TemplateParameterList * getTemplateParameters() const
  • public bool hasAssociatedConstraints() const
  • public bool isMemberSpecialization()
  • public void setInstantiatedFromMember(clang::VarTemplatePartialSpecializationDecl * PartialSpec)
  • public void setMemberSpecialization()

Inherited from VarTemplateSpecializationDecl:

Inherited from FoldingSetBase::Node:

Inherited from VarDecl:

Inherited from DeclaratorDecl:

Inherited from ValueDecl:

Inherited from NamedDecl:

Inherited from Decl:

Methods

static clang::
    VarTemplatePartialSpecializationDecl*
    Create(clang::ASTContext& Context,
           clang::DeclContext* DC,
           clang::SourceLocation StartLoc,
           clang::SourceLocation IdLoc,
           clang::TemplateParameterList* Params,
           clang::VarTemplateDecl*
               SpecializedTemplate,
           clang::QualType T,
           clang::TypeSourceInfo* TInfo,
           clang::StorageClass S,
           ArrayRef<clang::TemplateArgument> Args,
           const clang::TemplateArgumentListInfo&
               ArgInfos)

Declared at: clang/include/clang/AST/DeclTemplate.h:2988

Parameters

clang::ASTContext& Context
clang::DeclContext* DC
clang::SourceLocation StartLoc
clang::SourceLocation IdLoc
clang::TemplateParameterList* Params
clang::VarTemplateDecl* SpecializedTemplate
clang::QualType T
clang::TypeSourceInfo* TInfo
clang::StorageClass S
ArrayRef<clang::TemplateArgument> Args
const clang::TemplateArgumentListInfo& ArgInfos

static clang::
    VarTemplatePartialSpecializationDecl*
    CreateDeserialized(clang::ASTContext& C,
                       unsigned int ID)

Declared at: clang/include/clang/AST/DeclTemplate.h:2994

Parameters

clang::ASTContext& C
unsigned int ID

static void Profile(
    llvm::FoldingSetNodeID& ID,
    ArrayRef<clang::TemplateArgument>
        TemplateArgs,
    clang::TemplateParameterList* TPL,
    clang::ASTContext& Context)

Declared at: clang/include/clang/AST/DeclTemplate.h:3095

Parameters

llvm::FoldingSetNodeID& ID
ArrayRef<clang::TemplateArgument> TemplateArgs
clang::TemplateParameterList* TPL
clang::ASTContext& Context

void Profile(llvm::FoldingSetNodeID& ID) const

Declared at: clang/include/clang/AST/DeclTemplate.h:3089

Parameters

llvm::FoldingSetNodeID& ID

VarTemplatePartialSpecializationDecl(
    clang::ASTContext& Context)

Declared at: clang/include/clang/AST/DeclTemplate.h:2976

Parameters

clang::ASTContext& Context

VarTemplatePartialSpecializationDecl(
    clang::ASTContext& Context,
    clang::DeclContext* DC,
    clang::SourceLocation StartLoc,
    clang::SourceLocation IdLoc,
    clang::TemplateParameterList* Params,
    clang::VarTemplateDecl* SpecializedTemplate,
    clang::QualType T,
    clang::TypeSourceInfo* TInfo,
    clang::StorageClass S,
    ArrayRef<clang::TemplateArgument> Args,
    const clang::ASTTemplateArgumentListInfo*
        ArgInfos)

Declared at: clang/include/clang/AST/DeclTemplate.h:2969

Parameters

clang::ASTContext& Context
clang::DeclContext* DC
clang::SourceLocation StartLoc
clang::SourceLocation IdLoc
clang::TemplateParameterList* Params
clang::VarTemplateDecl* SpecializedTemplate
clang::QualType T
clang::TypeSourceInfo* TInfo
clang::StorageClass S
ArrayRef<clang::TemplateArgument> Args
const clang::ASTTemplateArgumentListInfo* ArgInfos

void anchor()

Declared at: clang/include/clang/AST/DeclTemplate.h:2981

static bool classof(const clang::Decl* D)

Declared at: clang/include/clang/AST/DeclTemplate.h:3098

Parameters

const clang::Decl* D

static bool classofKind(clang::Decl::Kind K)

Declared at: clang/include/clang/AST/DeclTemplate.h:3100

Parameters

clang::Decl::Kind K

void getAssociatedConstraints(
    llvm::SmallVectorImpl<const Expr*>& AC) const

Description

All associated constraints of this partial specialization, including the requires clause and any constraints derived from constrained-parameters.

The constraints in the resulting list are to be treated as if in a conjunction ("and").

Declared at: clang/include/clang/AST/DeclTemplate.h:3019

Parameters

llvm::SmallVectorImpl<const Expr*>& AC

clang::VarTemplatePartialSpecializationDecl*
getInstantiatedFromMember() const

Description

Retrieve the member variable template partial specialization from which this particular variable template partial specialization was instantiated.

In this example, the instantiation of \c Outer<float>::Inner<int*> will end up instantiating the partial specialization\c Outer<float>::Inner<U*>, which itself was instantiated from the variable template partial specialization \c Outer<T>::Inner<U*>. Given\c Outer<float>::Inner<U*>, this function would return\c Outer<T>::Inner<U*>.

Declared at: clang/include/clang/AST/DeclTemplate.h:3047

clang::VarTemplatePartialSpecializationDecl*
getMostRecentDecl()

Declared at: clang/include/clang/AST/DeclTemplate.h:2997

const clang::ASTTemplateArgumentListInfo*
getTemplateArgsAsWritten() const

Description

Get the template arguments as written.

Declared at: clang/include/clang/AST/DeclTemplate.h:3009

clang::TemplateParameterList*
getTemplateParameters() const

Description

Get the list of template parameters

Declared at: clang/include/clang/AST/DeclTemplate.h:3004

bool hasAssociatedConstraints() const

Declared at: clang/include/clang/AST/DeclTemplate.h:3023

bool isMemberSpecialization()

Description

Determines whether this variable template partial specialization was a specialization of a member partial specialization. In the following example, the member template partial specialization\c X<int>::Inner<T*> is a member specialization.

Declared at: clang/include/clang/AST/DeclTemplate.h:3075

void setInstantiatedFromMember(
    clang::VarTemplatePartialSpecializationDecl*
        PartialSpec)

Declared at: clang/include/clang/AST/DeclTemplate.h:3054

Parameters

clang::VarTemplatePartialSpecializationDecl* PartialSpec

void setMemberSpecialization()

Description

Note that this member template is a specialization.

Declared at: clang/include/clang/AST/DeclTemplate.h:3082