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)

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;
        })

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())

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;
        })

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 = {})

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&)

Declared at: clang/include/clang/Sema/Overload.h:1078

Parameters

const clang::OverloadCandidateSet&

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)

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()

Declared at: clang/include/clang/Sema/Overload.h:1109

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()

Declared at: clang/include/clang/Sema/Overload.h:1072

bool empty() const

Declared at: clang/include/clang/Sema/Overload.h:1113

clang::OverloadCandidateSet::iterator end()

Declared at: clang/include/clang/Sema/Overload.h:1110

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()

Declared at: clang/include/clang/Sema/Overload.h:1166

clang::OverloadCandidateSet::CandidateSetKind
getKind() const

Declared at: clang/include/clang/Sema/Overload.h:1083

clang::SourceLocation getLocation() const

Declared at: clang/include/clang/Sema/Overload.h:1082

clang::OverloadCandidateSet::OperatorRewriteInfo
getRewriteInfo() const

Declared at: clang/include/clang/Sema/Overload.h:1084

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)

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)

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

Declared at: clang/include/clang/Sema/Overload.h:1112

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()

Declared at: clang/include/clang/Sema/Overload.h:1080