clang  19.0.0git
Public Member Functions | Public Attributes | Friends | List of all members
clang::OverloadCandidate Struct Reference

OverloadCandidate - A single candidate in an overload set (C++ 13.3). More...

#include "clang/Sema/Overload.h"

Public Member Functions

OverloadCandidateRewriteKind getRewriteKind () const
 Get RewriteKind value in OverloadCandidateRewriteKind type (This function is to workaround the spurious GCC bitfield enum warning) More...
 
bool isReversed () const
 
bool hasAmbiguousConversion () const
 hasAmbiguousConversion - Returns whether this overload candidate requires an ambiguous conversion or not. More...
 
bool TryToFixBadConversion (unsigned Idx, Sema &S)
 
unsigned getNumParams () const
 
bool NotValidBecauseConstraintExprHasError () const
 

Public Attributes

FunctionDeclFunction
 Function - The actual function that this candidate represents. More...
 
DeclAccessPair FoundDecl
 FoundDecl - The original declaration that was looked up / invented / otherwise found, together with its access. More...
 
QualType BuiltinParamTypes [3]
 BuiltinParamTypes - Provides the parameter types of a built-in overload candidate. More...
 
CXXConversionDeclSurrogate
 Surrogate - The conversion function for which this candidate is a surrogate, but only if IsSurrogate is true. More...
 
ConversionSequenceList Conversions
 The conversion sequences used to convert the function arguments to the function parameters. More...
 
ConversionFixItGenerator Fix
 The FixIt hints which can be used to fix the Bad candidate. More...
 
bool Viable: 1
 Viable - True to indicate that this overload candidate is viable. More...
 
bool Best: 1
 Whether this candidate is the best viable function, or tied for being the best viable function. More...
 
bool IsSurrogate: 1
 IsSurrogate - True to indicate that this candidate is a surrogate for a conversion to a function pointer or reference (C++ [over.call.object]). More...
 
bool IgnoreObjectArgument: 1
 IgnoreObjectArgument - True to indicate that the first argument's conversion, which for this function represents the implicit object argument, should be ignored. More...
 
CallExpr::ADLCallKind IsADLCandidate: 1
 True if the candidate was found using ADL. More...
 
unsigned RewriteKind: 2
 Whether this is a rewritten candidate, and if so, of what kind? More...
 
unsigned char FailureKind
 FailureKind - The reason why this candidate is not viable. More...
 
unsigned ExplicitCallArguments
 The number of call arguments that were explicitly provided, to be used while performing partial ordering of function templates. More...
 
union {
   DeductionFailureInfo   DeductionFailure
 
   StandardConversionSequence   FinalConversion
 FinalConversion - For a conversion function (where Function is a CXXConversionDecl), the standard conversion that occurs after the call to the overload candidate to convert the result of calling the conversion function to the required type. More...
 
}; 
 

Friends

class OverloadCandidateSet
 

Detailed Description

OverloadCandidate - A single candidate in an overload set (C++ 13.3).

Definition at line 848 of file Overload.h.

Member Function Documentation

◆ getNumParams()

unsigned clang::OverloadCandidate::getNumParams ( ) const
inline

◆ getRewriteKind()

OverloadCandidateRewriteKind clang::OverloadCandidate::getRewriteKind ( ) const
inline

Get RewriteKind value in OverloadCandidateRewriteKind type (This function is to workaround the spurious GCC bitfield enum warning)

Definition at line 929 of file Overload.h.

References RewriteKind.

Referenced by isReversed().

◆ hasAmbiguousConversion()

bool clang::OverloadCandidate::hasAmbiguousConversion ( ) const
inline

hasAmbiguousConversion - Returns whether this overload candidate requires an ambiguous conversion or not.

Definition at line 937 of file Overload.h.

References Conversions.

◆ isReversed()

bool clang::OverloadCandidate::isReversed ( ) const
inline

Definition at line 933 of file Overload.h.

References clang::CRK_Reversed, and getRewriteKind().

◆ NotValidBecauseConstraintExprHasError()

bool OverloadCandidate::NotValidBecauseConstraintExprHasError ( ) const

◆ TryToFixBadConversion()

bool clang::OverloadCandidate::TryToFixBadConversion ( unsigned  Idx,
Sema S 
)
inline

Definition at line 945 of file Overload.h.

Friends And Related Function Documentation

◆ OverloadCandidateSet

friend class OverloadCandidateSet
friend

Definition at line 973 of file Overload.h.

Member Data Documentation

◆ 

union { ... }

◆ Best

bool clang::OverloadCandidate::Best

Whether this candidate is the best viable function, or tied for being the best viable function.

For an ambiguous overload resolution, indicates whether this candidate was part of the ambiguity kernel: the minimal non-empty set of viable candidates such that all elements of the ambiguity kernel are better than all viable candidates not in the ambiguity kernel.

Definition at line 886 of file Overload.h.

◆ BuiltinParamTypes

QualType clang::OverloadCandidate::BuiltinParamTypes[3]

BuiltinParamTypes - Provides the parameter types of a built-in overload candidate.

Only valid when Function is NULL.

Definition at line 862 of file Overload.h.

Referenced by clang::Sema::AddBuiltinCandidate().

◆ Conversions

ConversionSequenceList clang::OverloadCandidate::Conversions

The conversion sequences used to convert the function arguments to the function parameters.

Note that these are indexed by argument, so may not match the parameter order of Function.

Definition at line 871 of file Overload.h.

Referenced by clang::Sema::AddBuiltinCandidate(), hasAmbiguousConversion(), and clang::Sema::PerformCopyInitialization().

◆ DeductionFailure

DeductionFailureInfo clang::OverloadCandidate::DeductionFailure

Definition at line 918 of file Overload.h.

◆ ExplicitCallArguments

unsigned clang::OverloadCandidate::ExplicitCallArguments

The number of call arguments that were explicitly provided, to be used while performing partial ordering of function templates.

Definition at line 915 of file Overload.h.

Referenced by clang::Sema::AddBuiltinCandidate(), and getNumParams().

◆ FailureKind

unsigned char clang::OverloadCandidate::FailureKind

FailureKind - The reason why this candidate is not viable.

Actually an OverloadFailureKind.

Definition at line 911 of file Overload.h.

Referenced by clang::Sema::AddBuiltinCandidate(), and clang::Sema::PerformCopyInitialization().

◆ FinalConversion

StandardConversionSequence clang::OverloadCandidate::FinalConversion

FinalConversion - For a conversion function (where Function is a CXXConversionDecl), the standard conversion that occurs after the call to the overload candidate to convert the result of calling the conversion function to the required type.

Definition at line 924 of file Overload.h.

◆ Fix

ConversionFixItGenerator clang::OverloadCandidate::Fix

The FixIt hints which can be used to fix the Bad candidate.

Definition at line 874 of file Overload.h.

◆ FoundDecl

DeclAccessPair clang::OverloadCandidate::FoundDecl

FoundDecl - The original declaration that was looked up / invented / otherwise found, together with its access.

Might be a UsingShadowDecl or a FunctionTemplateDecl.

Definition at line 858 of file Overload.h.

Referenced by clang::Sema::AddBuiltinCandidate().

◆ Function

FunctionDecl* clang::OverloadCandidate::Function

Function - The actual function that this candidate represents.

When NULL, this is a built-in candidate (C++ [over.oper]) or a surrogate for a conversion to a function pointer or reference (C++ [over.call.object]).

Definition at line 853 of file Overload.h.

Referenced by clang::Sema::AddBuiltinCandidate(), GetLocationForCandidate(), getNumParams(), and isBetterMultiversionCandidate().

◆ IgnoreObjectArgument

bool clang::OverloadCandidate::IgnoreObjectArgument

IgnoreObjectArgument - True to indicate that the first argument's conversion, which for this function represents the implicit object argument, should be ignored.

This will be true when the candidate is a static member function (where the implicit object argument is just a placeholder) or a non-static member function when the call doesn't have an object argument.

Definition at line 900 of file Overload.h.

Referenced by clang::Sema::AddBuiltinCandidate().

◆ IsADLCandidate

CallExpr::ADLCallKind clang::OverloadCandidate::IsADLCandidate

True if the candidate was found using ADL.

Definition at line 903 of file Overload.h.

◆ IsSurrogate

bool clang::OverloadCandidate::IsSurrogate

IsSurrogate - True to indicate that this candidate is a surrogate for a conversion to a function pointer or reference (C++ [over.call.object]).

Definition at line 891 of file Overload.h.

Referenced by clang::Sema::AddBuiltinCandidate(), GetLocationForCandidate(), and getNumParams().

◆ RewriteKind

unsigned clang::OverloadCandidate::RewriteKind

Whether this is a rewritten candidate, and if so, of what kind?

Definition at line 907 of file Overload.h.

Referenced by getRewriteKind().

◆ Surrogate

CXXConversionDecl* clang::OverloadCandidate::Surrogate

Surrogate - The conversion function for which this candidate is a surrogate, but only if IsSurrogate is true.

Definition at line 866 of file Overload.h.

Referenced by GetLocationForCandidate(), and getNumParams().

◆ Viable

bool clang::OverloadCandidate::Viable

Viable - True to indicate that this overload candidate is viable.

Definition at line 877 of file Overload.h.

Referenced by clang::Sema::AddBuiltinCandidate(), and clang::Sema::PerformCopyInitialization().


The documentation for this struct was generated from the following files: