clang: clang::OverloadCandidateSet Class Reference (original) (raw)
OverloadCandidateSet - A set of overload candidates, used in C++ overload resolution (C++ 13.3). More...
#include "[clang/Sema/Overload.h](Overload%5F8h%5Fsource.html)"
Classes | |
---|---|
struct | OperatorRewriteInfo |
Information about operator rewrites to consider when adding operator functions to a candidate set. More... | |
Public Member Functions | |
---|---|
OverloadCandidateSet (SourceLocation Loc, CandidateSetKind CSK, OperatorRewriteInfo RewriteInfo={}) | |
OverloadCandidateSet (const OverloadCandidateSet &)=delete | |
OverloadCandidateSet & | operator= (const OverloadCandidateSet &)=delete |
~OverloadCandidateSet () | |
SourceLocation | getLocation () const |
CandidateSetKind | getKind () const |
OperatorRewriteInfo | getRewriteInfo () const |
bool | shouldDeferDiags (Sema &S, ArrayRef< Expr * > Args, SourceLocation OpLoc) |
Whether diagnostics should be deferred. | |
bool | isNewCandidate (Decl *F, OverloadCandidateParamOrder PO=OverloadCandidateParamOrder::Normal) |
Determine when this overload candidate will be new to the overload set. | |
void | exclude (Decl *F) |
Exclude a function from being considered by overload resolution. | |
void | clear (CandidateSetKind CSK) |
Clear out all of the candidates. | |
iterator | begin () |
iterator | end () |
size_t | size () const |
bool | empty () const |
ConversionSequenceList | allocateConversionSequences (unsigned NumConversions) |
Allocate storage for conversion sequences for NumConversions conversions. | |
OverloadCandidate & | addCandidate (unsigned NumConversions=0, ConversionSequenceList Conversions={}) |
Add a new candidate with NumConversions conversion sequence slots to the overload set. | |
OverloadingResult | BestViableFunction (Sema &S, SourceLocation Loc, OverloadCandidateSet::iterator &Best) |
Find the best viable function on this overload set, if it exists. | |
SmallVector< OverloadCandidate *, 32 > | CompleteCandidates (Sema &S, OverloadCandidateDisplayKind OCD, ArrayRef< Expr * > Args, SourceLocation OpLoc=SourceLocation(), llvm::function_ref< bool(OverloadCandidate &)> Filter=[](OverloadCandidate &) { return true;}) |
void | NoteCandidates (PartialDiagnosticAt PA, Sema &S, OverloadCandidateDisplayKind OCD, ArrayRef< Expr * > Args, StringRef Opc="", SourceLocation Loc=SourceLocation(), llvm::function_ref< bool(OverloadCandidate &)> Filter=[](OverloadCandidate &) { return true;}) |
When overload resolution fails, prints diagnostic messages containing the candidates in the candidate set. | |
void | NoteCandidates (Sema &S, ArrayRef< Expr * > Args, ArrayRef< OverloadCandidate * > Cands, StringRef Opc="", SourceLocation OpLoc=SourceLocation()) |
LangAS | getDestAS () |
void | setDestAS (LangAS AS) |
OverloadCandidateSet - A set of overload candidates, used in C++ overload resolution (C++ 13.3).
Definition at line 1015 of file Overload.h.
◆ iterator
◆ CandidateSetKind
Enumerator | |
---|---|
CSK_Normal | Normal lookup. |
CSK_Operator | C++ [over.match.oper]: Lookup of operator function candidates in a call using operator syntax. Candidates that have no parameters of class type will be skipped unless there is a parameter of (reference to) enum type and the corresponding argument is of the same enum type. |
CSK_InitByUserDefinedConversion | C++ [over.match.copy]: Copy-initialization of an object of class type by user-defined conversion. |
CSK_InitByConstructor | C++ [over.match.ctor], [over.match.list] Initialization of an object of class type by constructor, using either a parenthesized or braced list of arguments. |
CSK_AddressOfOverloadSet | C++ [over.match.call.general] Resolve a call through the address of an overload set. |
Definition at line 1017 of file Overload.h.
◆ OverloadCandidateSet() [2/2]
◆ ~OverloadCandidateSet()
clang::OverloadCandidateSet::~OverloadCandidateSet ( ) | inline |
---|
◆ addCandidate()
◆ allocateConversionSequences()
◆ begin()
iterator clang::OverloadCandidateSet::begin ( ) | inline |
---|
◆ BestViableFunction()
Find the best viable function on this overload set, if it exists.
Computes the best viable function (C++ 13.3.3) within an overload candidate set.
Parameters
Loc | The location of the function name (or operator symbol) for which overload resolution occurs. |
---|---|
Best | If overload resolution was successful or found a deleted function, Best points to the candidate function found. |
Returns
The result of overload resolution.
Definition at line 10815 of file SemaOverload.cpp.
References begin(), clang::OverloadCandidate::Best, clang::SemaCUDA::CFP_SameSide, clang::SemaCUDA::CFP_WrongSide, CSK_AddressOfOverloadSet, clang::Sema::CUDA(), clang::Sema::diagnoseEquivalentInternalLinkageDeclarations(), end(), clang::OverloadCandidate::Function, clang::Sema::getCurFunctionDecl(), clang::Sema::getLangOpts(), clang::SemaCUDA::IdentifyPreference(), clang::isBetterOverloadCandidate(), clang::Sema::isEquivalentInternalLinkageDeclaration(), Loc, clang::OverloadCandidate::NotValidBecauseConstraintExprHasError(), clang::OR_Ambiguous, clang::OR_Deleted, clang::OR_No_Viable_Function, clang::OR_Success, and clang::OverloadCandidate::Viable.
Referenced by clang::Sema::ActOnExplicitInstantiation(), clang::Sema::BuildCallToMemberFunction(), clang::Sema::BuildCallToObjectOfClassType(), clang::Sema::BuildForRangeBeginEndCall(), clang::Sema::BuildLiteralOperatorCall(), clang::Sema::BuildOverloadedArrowExpr(), clang::Sema::BuildOverloadedCallExpr(), clang::Sema::buildOverloadedCallSet(), ComputeSelectedDestructor(), clang::Sema::CreateOverloadedArraySubscriptExpr(), clang::Sema::CreateOverloadedBinOp(), clang::Sema::CreateOverloadedUnaryOp(), clang::Sema::DeduceTemplateSpecializationFromInitializer(), clang::InitializationSequence::Diagnose(), clang::Sema::DiagnoseEmptyLookup(), DiagnoseTwoPhaseLookup(), FindConditionalOverload(), FindConversionForRefInit(), clang::InitializationSequence::InitializeFrom(), IsInitializerListConstructorConversion(), IsUserDefinedConversion(), clang::Sema::LookupSpecialMember(), clang::Sema::PerformContextualImplicitConversion(), resolveAllocationOverload(), resolveBuiltinNewDeleteOverload(), ResolveConstructorOverload(), tryDiagnoseOverloadedCast(), TryRefInitWithConversionFunction(), TryTypoCorrectionForCall(), and TryUserDefinedConversion().
◆ clear()
◆ CompleteCandidates()
Definition at line 12609 of file SemaOverload.cpp.
References begin(), CompleteNonViableCandidate(), end(), clang::OCD_AllCandidates, clang::OCD_AmbiguousCandidates, clang::OCD_ViableCandidates, and size().
Referenced by clang::Sema::BuildOverloadedArrowExpr(), clang::Sema::CreateOverloadedBinOp(), clang::InitializationSequence::Diagnose(), clang::Sema::DiagnoseMultipleUserDefinedConversion(), NoteCandidates(), resolveAllocationOverload(), and shouldDeferDiags().
◆ empty()
bool clang::OverloadCandidateSet::empty ( ) const | inline |
---|
Definition at line 1198 of file Overload.h.
Referenced by clang::Sema::ActOnExplicitInstantiation(), clang::Sema::BuildCallToObjectOfClassType(), clang::Sema::BuildForRangeBeginEndCall(), clang::Sema::BuildOverloadedArrowExpr(), clang::Sema::buildOverloadedCallSet(), ComputeSelectedDestructor(), clang::Sema::CreateOverloadedArraySubscriptExpr(), clang::Sema::DiagnoseMultipleUserDefinedConversion(), FinishOverloadedCallExpr(), clang::SemaCodeCompletion::ProduceCallSignatureHelp(), tryDiagnoseOverloadedCast(), and TryReferenceInitializationCore().
◆ end()
iterator clang::OverloadCandidateSet::end ( ) | inline |
---|
Definition at line 1195 of file Overload.h.
Referenced by clang::Sema::AddArgumentDependentLookupCandidates(), BestViableFunction(), clang::Sema::BuildCallToObjectOfClassType(), chooseRecoveryType(), CompleteCandidates(), DiagnoseTwoPhaseLookup(), FindConversionForRefInit(), FinishOverloadedCallExpr(), markUnaddressableCandidatesUnviable(), NoteCandidates(), clang::TemplateSpecCandidateSet::NoteCandidates(), and TryUserDefinedConversion().
◆ exclude()
void clang::OverloadCandidateSet::exclude ( Decl * F) | inline |
---|
◆ getDestAS()
LangAS clang::OverloadCandidateSet::getDestAS ( ) | inline |
---|
◆ getKind()
◆ getLocation()
SourceLocation clang::OverloadCandidateSet::getLocation ( ) const | inline |
---|
◆ getRewriteInfo()
◆ isNewCandidate()
◆ NoteCandidates() [1/2]
When overload resolution fails, prints diagnostic messages containing the candidates in the candidate set.
Definition at line 12673 of file SemaOverload.cpp.
References begin(), CompleteCandidates(), clang::SemaBase::Diag(), end(), MaybeDiagnoseAmbiguousConstraints(), NoteCandidates(), clang::OCD_AmbiguousCandidates, and shouldDeferDiags().
Referenced by clang::Sema::ActOnExplicitInstantiation(), clang::Sema::BuildCallToMemberFunction(), clang::Sema::BuildCallToObjectOfClassType(), clang::Sema::BuildCXXForRangeStmt(), clang::Sema::BuildLiteralOperatorCall(), BuildNonArrayForRange(), clang::Sema::BuildOverloadedArrowExpr(), CheckCXX98CompatAccessibleCopy(), ComputeSelectedDestructor(), CopyObject(), clang::Sema::CreateOverloadedArraySubscriptExpr(), clang::Sema::CreateOverloadedBinOp(), clang::Sema::CreateOverloadedUnaryOp(), clang::Sema::DeduceTemplateSpecializationFromInitializer(), clang::InitializationSequence::Diagnose(), clang::Sema::DiagnoseMultipleUserDefinedConversion(), clang::Sema::DiagnoseUseOfDeletedFunction(), FinishOverloadedCallExpr(), NoteCandidates(), resolveAllocationOverload(), resolveBuiltinNewDeleteOverload(), and tryDiagnoseOverloadedCast().
◆ NoteCandidates() [2/2]
Definition at line 12697 of file SemaOverload.cpp.
References clang::SemaBase::Diag(), clang::Sema::Diags, E, clang::OverloadCandidate::Function, clang::DiagnosticsEngine::getNumOverloadCandidatesToShow(), clang::DiagnosticsEngine::getShowOverloads(), int, clang::OverloadCandidate::IsSurrogate, NoteAmbiguousUserConversions(), NoteBuiltinOperatorCandidate(), NoteFunctionCandidate(), NoteSurrogateCandidate(), clang::DiagnosticsEngine::overloadCandidatesShown(), clang::Ovl_Best, shouldDeferDiags(), and clang::OverloadCandidate::Viable.
◆ operator=()
◆ setDestAS()
void clang::OverloadCandidateSet::setDestAS ( LangAS AS) | inline |
---|
◆ shouldDeferDiags()
◆ size()
size_t clang::OverloadCandidateSet::size ( ) const | inline |
---|
Definition at line 1197 of file Overload.h.
Referenced by clang::Sema::BuildCallToMemberFunction(), clang::Sema::BuildCallToObjectOfClassType(), clang::Sema::BuildLiteralOperatorCall(), clang::Sema::BuildOverloadedArrowExpr(), CompleteCandidates(), CopyObject(), clang::Sema::CreateOverloadedArraySubscriptExpr(), clang::Sema::CreateOverloadedBinOp(), clang::Sema::CreateOverloadedUnaryOp(), FindConversionForRefInit(), IsInitializerListConstructorConversion(), IsUserDefinedConversion(), clang::TemplateSpecCandidateSet::NoteCandidates(), TryConstructorInitialization(), TryRefInitWithConversionFunction(), and TryUserDefinedConversion().
The documentation for this class was generated from the following files:
- include/clang/Sema/Overload.h
- lib/Sema/SemaOverload.cpp