class ClassScopeFunctionSpecializationDecl

Declaration

class ClassScopeFunctionSpecializationDecl : public Decl { /* full declaration omitted */ };

Description

Declaration of a function specialization at template class scope. For example: "template<> foo(int a)" will be saved in Specialization as a normal CXXMethodDecl. Then during an instantiation of class A, it will be transformed into an actual function specialization. FIXME: This is redundant; we could store the same information directly on the CXXMethodDecl as a DependentFunctionTemplateSpecializationInfo.

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

Inherits from: Decl

Member Variables

private clang::CXXMethodDecl* Specialization
private const clang::ASTTemplateArgumentListInfo* TemplateArgs

Inherited from Decl:

protected NextInContextAndBits
protected Access
protected FromASTFile
protected IdentifierNamespace
protected CacheValidAndLinkage

Method Overview

  • private ClassScopeFunctionSpecializationDecl(clang::DeclContext * DC, clang::SourceLocation Loc, clang::CXXMethodDecl * FD, const clang::ASTTemplateArgumentListInfo * TemplArgs)
  • private ClassScopeFunctionSpecializationDecl(clang::Decl::EmptyShell Empty)
  • public static clang::ClassScopeFunctionSpecializationDecl * Create(clang::ASTContext & C, clang::DeclContext * DC, clang::SourceLocation Loc, clang::CXXMethodDecl * FD, bool HasExplicitTemplateArgs, const clang::TemplateArgumentListInfo & TemplateArgs)
  • public static clang::ClassScopeFunctionSpecializationDecl * CreateDeserialized(clang::ASTContext & Context, unsigned int ID)
  • private virtual void anchor()
  • public static bool classof(const clang::Decl * D)
  • public static bool classofKind(clang::Decl::Kind K)
  • public clang::CXXMethodDecl * getSpecialization() const
  • public const clang::ASTTemplateArgumentListInfo * getTemplateArgsAsWritten() const
  • public bool hasExplicitTemplateArgs() const

Inherited from Decl:

Methods

ClassScopeFunctionSpecializationDecl(
    clang::DeclContext* DC,
    clang::SourceLocation Loc,
    clang::CXXMethodDecl* FD,
    const clang::ASTTemplateArgumentListInfo*
        TemplArgs)

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

Parameters

clang::DeclContext* DC
clang::SourceLocation Loc
clang::CXXMethodDecl* FD
const clang::ASTTemplateArgumentListInfo* TemplArgs

ClassScopeFunctionSpecializationDecl(
    clang::Decl::EmptyShell Empty)

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

Parameters

clang::Decl::EmptyShell Empty

static clang::
    ClassScopeFunctionSpecializationDecl*
    Create(clang::ASTContext& C,
           clang::DeclContext* DC,
           clang::SourceLocation Loc,
           clang::CXXMethodDecl* FD,
           bool HasExplicitTemplateArgs,
           const clang::TemplateArgumentListInfo&
               TemplateArgs)

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

Parameters

clang::ASTContext& C
clang::DeclContext* DC
clang::SourceLocation Loc
clang::CXXMethodDecl* FD
bool HasExplicitTemplateArgs
const clang::TemplateArgumentListInfo& TemplateArgs

static clang::
    ClassScopeFunctionSpecializationDecl*
    CreateDeserialized(clang::ASTContext& Context,
                       unsigned int ID)

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

Parameters

clang::ASTContext& Context
unsigned int ID

virtual void anchor()

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

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

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

Parameters

const clang::Decl* D

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

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

Parameters

clang::Decl::Kind K

clang::CXXMethodDecl* getSpecialization() const

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

const clang::ASTTemplateArgumentListInfo*
getTemplateArgsAsWritten() const

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

bool hasExplicitTemplateArgs() const

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