class ConceptSpecializationExpr

Declaration

class ConceptSpecializationExpr : public Expr,
                                  public ConceptReference,
                                  private TrailingObjects { /* full declaration omitted */ };

Description

Represents the specialization of a concept - evaluates to a prvalue of type bool.

According to C++2a [expr.prim.id]p3 an id-expression that denotes the specialization of a concept results in a prvalue of type bool.

Declared at: clang/include/clang/AST/ExprConcepts.h:40

Inherits from: Expr, ConceptReference, TrailingObjects

Member Variables

protected unsigned int NumTemplateArgs
protected clang::ASTConstraintSatisfaction* Satisfaction

Inherited from ConceptReference:

protected NestedNameSpec
protected TemplateKWLoc
protected ConceptName
protected FoundDecl
protected NamedConcept
protected ArgsAsWritten

Inherited from Stmt:

protected

Method Overview

  • protected ConceptSpecializationExpr(const clang::ASTContext & C, clang::NestedNameSpecifierLoc NNS, clang::SourceLocation TemplateKWLoc, clang::DeclarationNameInfo ConceptNameInfo, clang::NamedDecl * FoundDecl, clang::ConceptDecl * NamedConcept, const clang::ASTTemplateArgumentListInfo * ArgsAsWritten, ArrayRef<clang::TemplateArgument> ConvertedArgs, const clang::ConstraintSatisfaction * Satisfaction)
  • protected ConceptSpecializationExpr(const clang::ASTContext & C, clang::ConceptDecl * NamedConcept, ArrayRef<clang::TemplateArgument> ConvertedArgs, const clang::ConstraintSatisfaction * Satisfaction, bool Dependent, bool ContainsUnexpandedParameterPack)
  • protected ConceptSpecializationExpr(clang::Stmt::EmptyShell Empty, unsigned int NumTemplateArgs)
  • public static clang::ConceptSpecializationExpr * Create(const clang::ASTContext & C, clang::NestedNameSpecifierLoc NNS, clang::SourceLocation TemplateKWLoc, clang::DeclarationNameInfo ConceptNameInfo, clang::NamedDecl * FoundDecl, clang::ConceptDecl * NamedConcept, const clang::ASTTemplateArgumentListInfo * ArgsAsWritten, ArrayRef<clang::TemplateArgument> ConvertedArgs, const clang::ConstraintSatisfaction * Satisfaction)
  • public static clang::ConceptSpecializationExpr * Create(const clang::ASTContext & C, clang::ConceptDecl * NamedConcept, ArrayRef<clang::TemplateArgument> ConvertedArgs, const clang::ConstraintSatisfaction * Satisfaction, bool Dependent, bool ContainsUnexpandedParameterPack)
  • public static clang::ConceptSpecializationExpr * Create(clang::ASTContext & C, clang::Stmt::EmptyShell Empty, unsigned int NumTemplateArgs)
  • public clang::Stmt::child_range children()
  • public clang::Stmt::const_child_range children() const
  • public static bool classof(const clang::Stmt * T)
  • public clang::SourceLocation getBeginLoc() const
  • public clang::SourceLocation getEndLoc() const
  • public const clang::ASTConstraintSatisfaction & getSatisfaction() const
  • public ArrayRef<clang::TemplateArgument> getTemplateArguments() const
  • public bool isSatisfied() const
  • public void setTemplateArguments(ArrayRef<clang::TemplateArgument> Converted)

Inherited from ConceptReference:

Inherited from Expr:

Inherited from ValueStmt:

Inherited from Stmt:

Methods

ConceptSpecializationExpr(
    const clang::ASTContext& C,
    clang::NestedNameSpecifierLoc NNS,
    clang::SourceLocation TemplateKWLoc,
    clang::DeclarationNameInfo ConceptNameInfo,
    clang::NamedDecl* FoundDecl,
    clang::ConceptDecl* NamedConcept,
    const clang::ASTTemplateArgumentListInfo*
        ArgsAsWritten,
    ArrayRef<clang::TemplateArgument>
        ConvertedArgs,
    const clang::ConstraintSatisfaction*
        Satisfaction)

Declared at: clang/include/clang/AST/ExprConcepts.h:58

Parameters

const clang::ASTContext& C
clang::NestedNameSpecifierLoc NNS
clang::SourceLocation TemplateKWLoc
clang::DeclarationNameInfo ConceptNameInfo
clang::NamedDecl* FoundDecl
clang::ConceptDecl* NamedConcept
const clang::ASTTemplateArgumentListInfo* ArgsAsWritten
ArrayRef<clang::TemplateArgument> ConvertedArgs
const clang::ConstraintSatisfaction* Satisfaction

ConceptSpecializationExpr(
    const clang::ASTContext& C,
    clang::ConceptDecl* NamedConcept,
    ArrayRef<clang::TemplateArgument>
        ConvertedArgs,
    const clang::ConstraintSatisfaction*
        Satisfaction,
    bool Dependent,
    bool ContainsUnexpandedParameterPack)

Declared at: clang/include/clang/AST/ExprConcepts.h:66

Parameters

const clang::ASTContext& C
clang::ConceptDecl* NamedConcept
ArrayRef<clang::TemplateArgument> ConvertedArgs
const clang::ConstraintSatisfaction* Satisfaction
bool Dependent
bool ContainsUnexpandedParameterPack

ConceptSpecializationExpr(
    clang::Stmt::EmptyShell Empty,
    unsigned int NumTemplateArgs)

Declared at: clang/include/clang/AST/ExprConcepts.h:72

Parameters

clang::Stmt::EmptyShell Empty
unsigned int NumTemplateArgs

static clang::ConceptSpecializationExpr* Create(
    const clang::ASTContext& C,
    clang::NestedNameSpecifierLoc NNS,
    clang::SourceLocation TemplateKWLoc,
    clang::DeclarationNameInfo ConceptNameInfo,
    clang::NamedDecl* FoundDecl,
    clang::ConceptDecl* NamedConcept,
    const clang::ASTTemplateArgumentListInfo*
        ArgsAsWritten,
    ArrayRef<clang::TemplateArgument>
        ConvertedArgs,
    const clang::ConstraintSatisfaction*
        Satisfaction)

Declared at: clang/include/clang/AST/ExprConcepts.h:77

Parameters

const clang::ASTContext& C
clang::NestedNameSpecifierLoc NNS
clang::SourceLocation TemplateKWLoc
clang::DeclarationNameInfo ConceptNameInfo
clang::NamedDecl* FoundDecl
clang::ConceptDecl* NamedConcept
const clang::ASTTemplateArgumentListInfo* ArgsAsWritten
ArrayRef<clang::TemplateArgument> ConvertedArgs
const clang::ConstraintSatisfaction* Satisfaction

static clang::ConceptSpecializationExpr* Create(
    const clang::ASTContext& C,
    clang::ConceptDecl* NamedConcept,
    ArrayRef<clang::TemplateArgument>
        ConvertedArgs,
    const clang::ConstraintSatisfaction*
        Satisfaction,
    bool Dependent,
    bool ContainsUnexpandedParameterPack)

Declared at: clang/include/clang/AST/ExprConcepts.h:85

Parameters

const clang::ASTContext& C
clang::ConceptDecl* NamedConcept
ArrayRef<clang::TemplateArgument> ConvertedArgs
const clang::ConstraintSatisfaction* Satisfaction
bool Dependent
bool ContainsUnexpandedParameterPack

static clang::ConceptSpecializationExpr* Create(
    clang::ASTContext& C,
    clang::Stmt::EmptyShell Empty,
    unsigned int NumTemplateArgs)

Declared at: clang/include/clang/AST/ExprConcepts.h:92

Parameters

clang::ASTContext& C
clang::Stmt::EmptyShell Empty
unsigned int NumTemplateArgs

clang::Stmt::child_range children()

Declared at: clang/include/clang/AST/ExprConcepts.h:139

clang::Stmt::const_child_range children() const

Declared at: clang/include/clang/AST/ExprConcepts.h:142

static bool classof(const clang::Stmt* T)

Declared at: clang/include/clang/AST/ExprConcepts.h:120

Parameters

const clang::Stmt* T

clang::SourceLocation getBeginLoc() const

Declared at: clang/include/clang/AST/ExprConcepts.h:124

clang::SourceLocation getEndLoc() const

Declared at: clang/include/clang/AST/ExprConcepts.h:130

const clang::ASTConstraintSatisfaction&
getSatisfaction() const

Description

Get elaborated satisfaction info about the template arguments' satisfaction of the named concept. The expression must not be dependent.

Declared at: clang/include/clang/AST/ExprConcepts.h:114

ArrayRef<clang::TemplateArgument>
getTemplateArguments() const

Declared at: clang/include/clang/AST/ExprConcepts.h:94

bool isSatisfied() const

Description

Whether or not the concept with the given arguments was satisfied when the expression was created. The expression must not be dependent.

Declared at: clang/include/clang/AST/ExprConcepts.h:105

void setTemplateArguments(
    ArrayRef<clang::TemplateArgument> Converted)

Description

Set new template arguments for this concept specialization.

Declared at: clang/include/clang/AST/ExprConcepts.h:100

Parameters

ArrayRef<clang::TemplateArgument> Converted