clang: clang::ImplicitConversionSequence Class Reference (original) (raw)
ImplicitConversionSequence - Represents an implicit conversion sequence, which may be a standard conversion sequence (C++ 13.3.3.1.1), user-defined conversion sequence (C++ 13.3.3.1.2), or an ellipsis conversion sequence (C++ 13.3.3.1.3). More...
#include "[clang/Sema/Overload.h](Overload%5F8h%5Fsource.html)"
Public Types | |
---|---|
enum | Kind { StandardConversion = 0 , StaticObjectArgumentConversion, UserDefinedConversion, AmbiguousConversion, EllipsisConversion, BadConversion } |
Kind - The kind of implicit conversion sequence. More... | |
enum | CompareKind { Better = -1 , Indistinguishable = 0 , Worse = 1 } |
Public Member Functions | |
---|---|
ImplicitConversionSequence () | |
ImplicitConversionSequence (const ImplicitConversionSequence &Other) | |
ImplicitConversionSequence & | operator= (const ImplicitConversionSequence &Other) |
~ImplicitConversionSequence () | |
Kind | getKind () const |
unsigned | getKindRank () const |
Return a ranking of the implicit conversion sequence kind, where smaller ranks represent better conversion sequences. | |
bool | isBad () const |
bool | isStandard () const |
bool | isStaticObjectArgument () const |
bool | isEllipsis () const |
bool | isAmbiguous () const |
bool | isUserDefined () const |
bool | isFailure () const |
bool | isInitialized () const |
Determines whether this conversion sequence has been initialized. | |
void | setBad (BadConversionSequence::FailureKind Failure, Expr *FromExpr, QualType ToType) |
Sets this sequence as a bad conversion for an explicit argument. | |
void | setBad (BadConversionSequence::FailureKind Failure, QualType FromType, QualType ToType) |
Sets this sequence as a bad conversion for an implicit argument. | |
void | setStandard () |
void | setStaticObjectArgument () |
void | setEllipsis () |
void | setUserDefined () |
void | setAmbiguous () |
void | setAsIdentityConversion (QualType T) |
bool | hasInitializerListContainerType () const |
void | setInitializerListContainerType (QualType T, bool IA) |
bool | isInitializerListOfIncompleteArray () const |
QualType | getInitializerListContainerType () const |
void | DiagnoseAmbiguousConversion (Sema &S, SourceLocation CaretLoc, const PartialDiagnostic &PDiag) const |
Diagnoses an ambiguous conversion. | |
void | dump () const |
dump - Print this implicit conversion sequence to standard error. | |
Public Attributes |
---|
union { |
StandardConversionSequence Standard |
UserDefinedConversionSequence UserDefined |
AmbiguousConversionSequence Ambiguous |
BadConversionSequence Bad |
}; |
ImplicitConversionSequence - Represents an implicit conversion sequence, which may be a standard conversion sequence (C++ 13.3.3.1.1), user-defined conversion sequence (C++ 13.3.3.1.2), or an ellipsis conversion sequence (C++ 13.3.3.1.3).
Definition at line 567 of file Overload.h.
◆ CompareKind
Enumerator |
---|
Better |
Indistinguishable |
Worse |
Definition at line 785 of file Overload.h.
◆ Kind
Kind - The kind of implicit conversion sequence.
BadConversion specifies that there is no conversion from the source type to the target type. AmbiguousConversion represents the unique ambiguous conversion (C++0x [over.best.ics]p10). StaticObjectArgumentConversion represents the conversion rules for the synthesized first argument of calls to static member functions ([over.best.ics.general]p8).
Enumerator |
---|
StandardConversion |
StaticObjectArgumentConversion |
UserDefinedConversion |
AmbiguousConversion |
EllipsisConversion |
BadConversion |
Definition at line 576 of file Overload.h.
clang::ImplicitConversionSequence::ImplicitConversionSequence ( ) | inline |
---|
◆ ImplicitConversionSequence() [2/2]
Definition at line 639 of file Overload.h.
References Ambiguous, AmbiguousConversion, Bad, BadConversion, clang::AmbiguousConversionSequence::copyFrom(), EllipsisConversion, clang::Other, Standard, StandardConversion, StaticObjectArgumentConversion, UserDefined, and UserDefinedConversion.
◆ ~ImplicitConversionSequence()
clang::ImplicitConversionSequence::~ImplicitConversionSequence ( ) | inline |
---|
◆ DiagnoseAmbiguousConversion()
◆ dump()
void ImplicitConversionSequence::dump | ( | ) | const |
---|
◆ getInitializerListContainerType()
QualType clang::ImplicitConversionSequence::getInitializerListContainerType ( ) const | inline |
---|
◆ getKind()
Kind clang::ImplicitConversionSequence::getKind ( ) const | inline |
---|
Definition at line 667 of file Overload.h.
References isInitialized().
Referenced by clang::Sema::AddConversionCandidate(), BuildConvertedConstantExpression(), CompareImplicitConversionSequences(), DiagnoseNarrowingInInitList(), getKindRank(), isAmbiguous(), isBad(), isEllipsis(), isStandard(), isStaticObjectArgument(), isUserDefined(), clang::Sema::PerformImplicitConversion(), and TryContextuallyConvertToObjCPointer().
◆ getKindRank()
unsigned clang::ImplicitConversionSequence::getKindRank ( ) const | inline |
---|
◆ getNullptrToBool()
Form an "implicit" conversion sequence from nullptr_t to bool, for a direct-initialization of a bool object from nullptr_t.
Definition at line 766 of file Overload.h.
References clang::StandardConversionSequence::First, clang::ICK_Boolean_Conversion, clang::ICK_Lvalue_To_Rvalue, clang::StandardConversionSequence::Second, clang::StandardConversionSequence::setAsIdentityConversion(), clang::StandardConversionSequence::setFromType(), setStandard(), clang::StandardConversionSequence::setToType(), and Standard.
Referenced by clang::InitializationSequence::InitializeFrom(), and TryContextuallyConvertToBool().
◆ hasInitializerListContainerType()
bool clang::ImplicitConversionSequence::hasInitializerListContainerType ( ) const | inline |
---|
◆ isAmbiguous()
bool clang::ImplicitConversionSequence::isAmbiguous ( ) const | inline |
---|
◆ isBad()
bool clang::ImplicitConversionSequence::isBad ( ) const | inline |
---|
Definition at line 699 of file Overload.h.
References BadConversion, and getKind().
Referenced by clang::Sema::AddSurrogateCandidate(), CompareImplicitConversionSequences(), DiagnoseBadConversion(), clang::InitializationSequence::InitializeFrom(), isFailure(), NoteAmbiguousUserConversions(), clang::Sema::PerformContextuallyConvertToBool(), clang::Sema::PerformContextuallyConvertToObjCPointer(), clang::Sema::PerformImplicitObjectArgumentInitialization(), clang::Sema::SelectBestMethod(), TryCopyInitialization(), TryListConversion(), TryObjectArgumentInitialization(), and TryReferenceInitializationCore().
◆ isEllipsis()
bool clang::ImplicitConversionSequence::isEllipsis ( ) const | inline |
---|
◆ isFailure()
bool clang::ImplicitConversionSequence::isFailure ( ) const | inline |
---|
◆ isInitialized()
bool clang::ImplicitConversionSequence::isInitialized ( ) const | inline |
---|
Determines whether this conversion sequence has been initialized.
Most operations should never need to query uninitialized conversions and should assert as above.
Definition at line 712 of file Overload.h.
Referenced by getKind().
◆ isInitializerListOfIncompleteArray()
bool clang::ImplicitConversionSequence::isInitializerListOfIncompleteArray ( ) const | inline |
---|
◆ isStandard()
bool clang::ImplicitConversionSequence::isStandard ( ) const | inline |
---|
◆ isStaticObjectArgument()
bool clang::ImplicitConversionSequence::isStaticObjectArgument ( ) const | inline |
---|
◆ isUserDefined()
bool clang::ImplicitConversionSequence::isUserDefined ( ) const | inline |
---|
◆ operator=()
◆ setAmbiguous()
void clang::ImplicitConversionSequence::setAmbiguous ( ) | inline |
---|
◆ setAsIdentityConversion()
void clang::ImplicitConversionSequence::setAsIdentityConversion ( QualType T) | inline |
---|
◆ setBad() [1/2]
◆ setBad() [2/2]
◆ setEllipsis()
void clang::ImplicitConversionSequence::setEllipsis ( ) | inline |
---|
◆ setInitializerListContainerType()
void clang::ImplicitConversionSequence::setInitializerListContainerType ( QualType T, bool IA ) | inline |
---|
◆ setStandard()
void clang::ImplicitConversionSequence::setStandard ( ) | inline |
---|
◆ setStaticObjectArgument()
void clang::ImplicitConversionSequence::setStaticObjectArgument ( ) | inline |
---|
◆ setUserDefined()
void clang::ImplicitConversionSequence::setUserDefined ( ) | inline |
---|
◆
union { ... } clang::ImplicitConversionSequence::@242
◆ Ambiguous
◆ Bad
◆ Standard
When ConversionKind == StandardConversion, provides the details of the standard conversion sequence.
Definition at line 618 of file Overload.h.
Referenced by clang::Sema::AddConversionCandidate(), clang::Sema::AddSurrogateCandidate(), BuildConvertedConstantExpression(), CheckC23ConstexprInitConversion(), CompareImplicitConversionSequences(), DiagnoseNarrowingInInitList(), dump(), getNullptrToBool(), hasDeprecatedStringLiteralToCharPtrConversion(), ImplicitConversionSequence(), clang::InitializationSequence::InitializeFrom(), clang::Sema::PerformImplicitConversion(), clang::Sema::PerformImplicitObjectArgumentInitialization(), clang::Sema::SelectBestMethod(), setAsIdentityConversion(), TryContextuallyConvertToObjCPointer(), TryImplicitConversion(), TryListInitialization(), tryObjCWritebackConversion(), TryObjectArgumentInitialization(), TryReferenceInit(), TryRefInitWithConversionFunction(), and TryUserDefinedConversion().
◆ UserDefined
When ConversionKind == UserDefinedConversion, provides the details of the user-defined conversion sequence.
Definition at line 622 of file Overload.h.
Referenced by BuildConvertedConstantExpression(), CompareImplicitConversionSequences(), clang::Sema::DiagnoseMultipleUserDefinedConversion(), DiagnoseNarrowingInInitList(), dump(), FindConversionForRefInit(), hasDeprecatedStringLiteralToCharPtrConversion(), ImplicitConversionSequence(), clang::Sema::PerformImplicitConversion(), TryContextuallyConvertToObjCPointer(), TryReferenceInit(), and TryUserDefinedConversion().
The documentation for this class was generated from the following files:
- include/clang/Sema/Overload.h
- lib/Sema/SemaOverload.cpp