class OverloadCandidateSet
Declaration
class OverloadCandidateSet { /* full declaration omitted */ };
Description
OverloadCandidateSet - A set of overload candidates, used in C++ overload resolution (C++ 13.3).
Declared at: clang/include/clang/Sema/Overload.h:939
Member Variables
- private SmallVector<clang::OverloadCandidate, 16> Candidates
- private llvm::SmallPtrSet<uintptr_t, 16> Functions
- private llvm::BumpPtrAllocator SlabAllocator
- private clang::SourceLocation Loc
- private clang::OverloadCandidateSet::CandidateSetKind Kind
- private clang::OverloadCandidateSet::OperatorRewriteInfo RewriteInfo
- private unsigned int NumInlineBytesUsed = 0
- private char[3648] InlineSpace
- private clang::LangAS DestAS = LangAS::Default
- private static const unsigned int NumInlineBytes = 24 * sizeof(clang::ImplicitConversionSequence)
Method Overview
- public clang::OverloadingResult BestViableFunction(clang::Sema & S, clang::SourceLocation Loc, OverloadCandidateSet::iterator & Best)
- public SmallVector<clang::OverloadCandidate *, 32> CompleteCandidates(clang::Sema & S, clang::OverloadCandidateDisplayKind OCD, ArrayRef<clang::Expr *> Args, clang::SourceLocation OpLoc = clang::SourceLocation(), llvm::function_ref<bool (OverloadCandidate &)> Filter = [](clang::OverloadCandidate &) { return true; })
- public void NoteCandidates(clang::Sema & S, ArrayRef<clang::Expr *> Args, ArrayRef<clang::OverloadCandidate *> Cands, llvm::StringRef Opc = "", clang::SourceLocation OpLoc = clang::SourceLocation())
- public void NoteCandidates(clang::PartialDiagnosticAt PA, clang::Sema & S, clang::OverloadCandidateDisplayKind OCD, ArrayRef<clang::Expr *> Args, llvm::StringRef Opc = "", clang::SourceLocation Loc = clang::SourceLocation(), llvm::function_ref<bool (OverloadCandidate &)> Filter = [](clang::OverloadCandidate &) { return true; })
- public OverloadCandidateSet(clang::SourceLocation Loc, clang::OverloadCandidateSet::CandidateSetKind CSK, clang::OverloadCandidateSet::OperatorRewriteInfo RewriteInfo = {})
- public OverloadCandidateSet(const clang::OverloadCandidateSet &)
- public clang::OverloadCandidate & addCandidate(unsigned int NumConversions = 0, clang::ConversionSequenceList Conversions = None)
- public clang::ConversionSequenceList allocateConversionSequences(unsigned int NumConversions)
- public clang::OverloadCandidateSet::iterator begin()
- public void clear(clang::OverloadCandidateSet::CandidateSetKind CSK)
- private void destroyCandidates()
- public bool empty() const
- public clang::OverloadCandidateSet::iterator end()
- public void exclude(clang::Decl * F)
- public clang::LangAS getDestAS()
- public clang::OverloadCandidateSet::CandidateSetKind getKind() const
- public clang::SourceLocation getLocation() const
- public clang::OverloadCandidateSet::OperatorRewriteInfo getRewriteInfo() const
- public bool isNewCandidate(clang::Decl * F, clang::OverloadCandidateParamOrder PO = OverloadCandidateParamOrder::Normal)
- public void setDestAS(clang::LangAS AS)
- public bool shouldDeferDiags(clang::Sema & S, ArrayRef<clang::Expr *> Args, clang::SourceLocation OpLoc)
- public size_t size() const
- private template <typename T>T * slabAllocate(unsigned int N)
- public ~OverloadCandidateSet()
Methods
¶clang::OverloadingResult BestViableFunction(
clang::Sema& S,
clang::SourceLocation Loc,
OverloadCandidateSet::iterator& Best)
clang::OverloadingResult BestViableFunction(
clang::Sema& S,
clang::SourceLocation Loc,
OverloadCandidateSet::iterator& Best)
Description
Find the best viable function on this overload set, if it exists.
Declared at: clang/include/clang/Sema/Overload.h:1145
Parameters
- clang::Sema& S
- clang::SourceLocation Loc
- OverloadCandidateSet::iterator& Best
¶SmallVector<clang::OverloadCandidate*, 32>
CompleteCandidates(
clang::Sema& S,
clang::OverloadCandidateDisplayKind OCD,
ArrayRef<clang::Expr*> Args,
clang::SourceLocation OpLoc =
clang::SourceLocation(),
llvm::function_ref<bool(OverloadCandidate&)>
Filter = [](clang::OverloadCandidate&) {
return true;
})
SmallVector<clang::OverloadCandidate*, 32>
CompleteCandidates(
clang::Sema& S,
clang::OverloadCandidateDisplayKind OCD,
ArrayRef<clang::Expr*> Args,
clang::SourceLocation OpLoc =
clang::SourceLocation(),
llvm::function_ref<bool(OverloadCandidate&)>
Filter = [](clang::OverloadCandidate&) {
return true;
})
Declared at: clang/include/clang/Sema/Overload.h:1148
Parameters
- clang::Sema& S
- clang::OverloadCandidateDisplayKind OCD
- ArrayRef<clang::Expr*> Args
- clang::SourceLocation OpLoc = clang::SourceLocation()
- llvm::function_ref<bool(OverloadCandidate&)> Filter = [](clang::OverloadCandidate &) { return true; }
¶void NoteCandidates(
clang::Sema& S,
ArrayRef<clang::Expr*> Args,
ArrayRef<clang::OverloadCandidate*> Cands,
llvm::StringRef Opc = "",
clang::SourceLocation OpLoc =
clang::SourceLocation())
void NoteCandidates(
clang::Sema& S,
ArrayRef<clang::Expr*> Args,
ArrayRef<clang::OverloadCandidate*> Cands,
llvm::StringRef Opc = "",
clang::SourceLocation OpLoc =
clang::SourceLocation())
Declared at: clang/include/clang/Sema/Overload.h:1161
Parameters
- clang::Sema& S
- ArrayRef<clang::Expr*> Args
- ArrayRef<clang::OverloadCandidate*> Cands
- llvm::StringRef Opc = ""
- clang::SourceLocation OpLoc = clang::SourceLocation()
¶void NoteCandidates(
clang::PartialDiagnosticAt PA,
clang::Sema& S,
clang::OverloadCandidateDisplayKind OCD,
ArrayRef<clang::Expr*> Args,
llvm::StringRef Opc = "",
clang::SourceLocation Loc =
clang::SourceLocation(),
llvm::function_ref<bool(OverloadCandidate&)>
Filter = [](clang::OverloadCandidate&) {
return true;
})
void NoteCandidates(
clang::PartialDiagnosticAt PA,
clang::Sema& S,
clang::OverloadCandidateDisplayKind OCD,
ArrayRef<clang::Expr*> Args,
llvm::StringRef Opc = "",
clang::SourceLocation Loc =
clang::SourceLocation(),
llvm::function_ref<bool(OverloadCandidate&)>
Filter = [](clang::OverloadCandidate&) {
return true;
})
Declared at: clang/include/clang/Sema/Overload.h:1154
Parameters
- clang::PartialDiagnosticAt PA
- clang::Sema& S
- clang::OverloadCandidateDisplayKind OCD
- ArrayRef<clang::Expr*> Args
- llvm::StringRef Opc = ""
- clang::SourceLocation Loc = clang::SourceLocation()
- llvm::function_ref<bool(OverloadCandidate&)> Filter = [](clang::OverloadCandidate &) { return true; }
¶OverloadCandidateSet(
clang::SourceLocation Loc,
clang::OverloadCandidateSet::CandidateSetKind
CSK,
clang::OverloadCandidateSet::
OperatorRewriteInfo RewriteInfo = {})
OverloadCandidateSet(
clang::SourceLocation Loc,
clang::OverloadCandidateSet::CandidateSetKind
CSK,
clang::OverloadCandidateSet::
OperatorRewriteInfo RewriteInfo = {})
Declared at: clang/include/clang/Sema/Overload.h:1075
Parameters
- clang::SourceLocation Loc
- clang::OverloadCandidateSet::CandidateSetKind CSK
- clang::OverloadCandidateSet::OperatorRewriteInfo RewriteInfo = {}
¶OverloadCandidateSet(
const clang::OverloadCandidateSet&)
OverloadCandidateSet(
const clang::OverloadCandidateSet&)
Declared at: clang/include/clang/Sema/Overload.h:1078
Parameters
- const clang::OverloadCandidateSet&
¶clang::OverloadCandidate& addCandidate(
unsigned int NumConversions = 0,
clang::ConversionSequenceList Conversions =
None)
clang::OverloadCandidate& addCandidate(
unsigned int NumConversions = 0,
clang::ConversionSequenceList Conversions =
None)
Description
Add a new candidate with NumConversions conversion sequence slots to the overload set.
Declared at: clang/include/clang/Sema/Overload.h:1131
Parameters
- unsigned int NumConversions = 0
- clang::ConversionSequenceList Conversions = None
¶clang::ConversionSequenceList
allocateConversionSequences(
unsigned int NumConversions)
clang::ConversionSequenceList
allocateConversionSequences(
unsigned int NumConversions)
Description
Allocate storage for conversion sequences for NumConversions conversions.
Declared at: clang/include/clang/Sema/Overload.h:1118
Parameters
- unsigned int NumConversions
¶clang::OverloadCandidateSet::iterator begin()
clang::OverloadCandidateSet::iterator begin()
Declared at: clang/include/clang/Sema/Overload.h:1109
¶void clear(
clang::OverloadCandidateSet::CandidateSetKind
CSK)
void clear(
clang::OverloadCandidateSet::CandidateSetKind
CSK)
Description
Clear out all of the candidates.
Declared at: clang/include/clang/Sema/Overload.h:1105
Parameters
- clang::OverloadCandidateSet::CandidateSetKind CSK
¶void destroyCandidates()
void destroyCandidates()
Declared at: clang/include/clang/Sema/Overload.h:1072
¶bool empty() const
bool empty() const
Declared at: clang/include/clang/Sema/Overload.h:1113
¶clang::OverloadCandidateSet::iterator end()
clang::OverloadCandidateSet::iterator end()
Declared at: clang/include/clang/Sema/Overload.h:1110
¶void exclude(clang::Decl* F)
void exclude(clang::Decl* F)
Description
Exclude a function from being considered by overload resolution.
Declared at: clang/include/clang/Sema/Overload.h:1099
Parameters
- clang::Decl* F
¶clang::LangAS getDestAS()
clang::LangAS getDestAS()
Declared at: clang/include/clang/Sema/Overload.h:1166
¶clang::OverloadCandidateSet::CandidateSetKind
getKind() const
clang::OverloadCandidateSet::CandidateSetKind
getKind() const
Declared at: clang/include/clang/Sema/Overload.h:1083
¶clang::SourceLocation getLocation() const
clang::SourceLocation getLocation() const
Declared at: clang/include/clang/Sema/Overload.h:1082
¶clang::OverloadCandidateSet::OperatorRewriteInfo
getRewriteInfo() const
clang::OverloadCandidateSet::OperatorRewriteInfo
getRewriteInfo() const
Declared at: clang/include/clang/Sema/Overload.h:1084
¶bool isNewCandidate(
clang::Decl* F,
clang::OverloadCandidateParamOrder PO =
OverloadCandidateParamOrder::Normal)
bool isNewCandidate(
clang::Decl* F,
clang::OverloadCandidateParamOrder PO =
OverloadCandidateParamOrder::Normal)
Description
Determine when this overload candidate will be new to the overload set.
Declared at: clang/include/clang/Sema/Overload.h:1091
Parameters
- clang::Decl* F
- clang::OverloadCandidateParamOrder PO = OverloadCandidateParamOrder::Normal
¶void setDestAS(clang::LangAS AS)
void setDestAS(clang::LangAS AS)
Declared at: clang/include/clang/Sema/Overload.h:1168
Parameters
- clang::LangAS AS
¶bool shouldDeferDiags(clang::Sema& S,
ArrayRef<clang::Expr*> Args,
clang::SourceLocation OpLoc)
bool shouldDeferDiags(clang::Sema& S,
ArrayRef<clang::Expr*> Args,
clang::SourceLocation OpLoc)
Description
Whether diagnostics should be deferred.
Declared at: clang/include/clang/Sema/Overload.h:1087
Parameters
- clang::Sema& S
- ArrayRef<clang::Expr*> Args
- clang::SourceLocation OpLoc
¶size_t size() const
size_t size() const
Declared at: clang/include/clang/Sema/Overload.h:1112
¶template <typename T>
T* slabAllocate(unsigned int N)
template <typename T>
T* slabAllocate(unsigned int N)
Description
If we have space, allocates from inline storage. Otherwise, allocates from the slab allocator. FIXME: It would probably be nice to have a SmallBumpPtrAllocator instead. FIXME: Now that this only allocates ImplicitConversionSequences, do we want to un-generalize this?
Declared at: clang/include/clang/Sema/Overload.h:1053
Templates
- T
Parameters
- unsigned int N
¶~OverloadCandidateSet()
~OverloadCandidateSet()
Declared at: clang/include/clang/Sema/Overload.h:1080