clang 18.0.0git
|
Store information needed for an explicit specifier. More...
#include "clang/AST/DeclCXX.h"
Public Member Functions | |
ExplicitSpecifier ()=default | |
ExplicitSpecifier (Expr *Expression, ExplicitSpecKind Kind) | |
ExplicitSpecKind | getKind () const |
const Expr * | getExpr () const |
Expr * | getExpr () |
bool | isSpecified () const |
Determine if the declaration had an explicit specifier of any kind. | |
bool | isEquivalent (const ExplicitSpecifier Other) const |
Check for equivalence of explicit specifiers. | |
bool | isExplicit () const |
Determine whether this specifier is known to correspond to an explicit declaration. | |
bool | isInvalid () const |
Determine if the explicit specifier is invalid. | |
void | setKind (ExplicitSpecKind Kind) |
void | setExpr (Expr *E) |
Static Public Member Functions | |
static ExplicitSpecifier | getFromDecl (FunctionDecl *Function) |
static const ExplicitSpecifier | getFromDecl (const FunctionDecl *Function) |
static ExplicitSpecifier | Invalid () |
Store information needed for an explicit specifier.
Used by CXXDeductionGuideDecl, CXXConstructorDecl and CXXConversionDecl.
|
default |
Referenced by Invalid().
|
inline |
|
inline |
Definition at line 1891 of file DeclCXX.h.
Referenced by addExplicitSpecifier(), clang::ast_matchers::AST_MATCHER_P(), clang::CXXConstructorDecl::Create(), DiagnoseFailedExplicitSpec(), clang::DeclSpec::getExplicitSpecRange(), instantiateExplicitSpecifier(), isEquivalent(), printExplicitSpecifier(), clang::CXXConstructorDecl::setExplicitSpecifier(), clang::DeclSpec::setFunctionSpecExplicit(), and clang::Sema::tryResolveExplicitSpecifier().
|
inlinestatic |
Definition at line 1919 of file DeclCXX.h.
References getFromDecl().
|
static |
Definition at line 2102 of file DeclCXX.cpp.
Referenced by clang::Sema::AddOverloadCandidate(), clang::ast_matchers::AST_MATCHER_P(), DiagnoseFailedExplicitSpec(), getFromDecl(), isNonDependentlyExplicit(), and clang::TemplateDeclInstantiator::VisitCXXMethodDecl().
|
inline |
Definition at line 1890 of file DeclCXX.h.
Referenced by addExplicitSpecifier(), instantiateExplicitSpecifier(), and isEquivalent().
|
inlinestatic |
Definition at line 1922 of file DeclCXX.h.
References ExplicitSpecifier(), and clang::Unresolved.
Referenced by instantiateExplicitSpecifier().
bool ExplicitSpecifier::isEquivalent | ( | const ExplicitSpecifier | Other | ) | const |
Check for equivalence of explicit specifiers.
Definition at line 2087 of file DeclCXX.cpp.
References clang::ODRHash::AddStmt(), clang::ODRHash::CalculateHash(), getExpr(), getKind(), and clang::Unresolved.
|
inline |
Determine whether this specifier is known to correspond to an explicit declaration.
Returns false if the specifier is absent or has an expression that is value-dependent or evaluates to false.
Definition at line 1906 of file DeclCXX.h.
References clang::ResolvedTrue.
Referenced by DiagnoseFailedExplicitSpec(), clang::CXXDeductionGuideDecl::isExplicit(), clang::CXXConstructorDecl::isExplicit(), clang::CXXConversionDecl::isExplicit(), isNonDependentlyExplicit(), and clang::CXXConstructorDecl::setExplicitSpecifier().
|
inline |
Determine if the explicit specifier is invalid.
This state occurs after a substitution failures.
Definition at line 1911 of file DeclCXX.h.
References clang::Unresolved.
Referenced by clang::TemplateDeclInstantiator::VisitCXXMethodDecl(), and clang::TemplateDeclInstantiator::VisitFunctionDecl().
|
inline |
Determine if the declaration had an explicit specifier of any kind.
Definition at line 1895 of file DeclCXX.h.
References clang::ResolvedFalse.
Referenced by clang::DeclSpec::hasExplicitSpecifier().
|
inline |
Definition at line 1916 of file DeclCXX.h.
Referenced by clang::Sema::tryResolveExplicitSpecifier().
|
inline |
Definition at line 1915 of file DeclCXX.h.
Referenced by clang::Sema::tryResolveExplicitSpecifier().