clang API Documentation
#include <Overload.h>

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 317 of file Overload.h.
Definition at line 458 of file Overload.h.
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).
| StandardConversion | |
| UserDefinedConversion | |
| AmbiguousConversion | |
| EllipsisConversion | |
| BadConversion |
Definition at line 322 of file Overload.h.
| clang::ImplicitConversionSequence::ImplicitConversionSequence | ( | ) | [inline] |
Definition at line 366 of file Overload.h.
Referenced by operator=().
| clang::ImplicitConversionSequence::~ImplicitConversionSequence | ( | ) | [inline] |
Definition at line 367 of file Overload.h.
| clang::ImplicitConversionSequence::ImplicitConversionSequence | ( | const ImplicitConversionSequence & | Other | ) | [inline] |
Definition at line 370 of file Overload.h.
References Ambiguous, AmbiguousConversion, Bad, BadConversion, clang::AmbiguousConversionSequence::copyFrom(), EllipsisConversion, Standard, StandardConversion, UserDefined, and UserDefinedConversion.
| void clang::ImplicitConversionSequence::DebugPrint | ( | ) | const |
DebugPrint - Print this implicit conversion sequence to standard error. Useful for debugging overloading issues.
Definition at line 248 of file SemaOverload.cpp.
References AmbiguousConversion, BadConversion, clang::UserDefinedConversionSequence::DebugPrint(), clang::StandardConversionSequence::DebugPrint(), EllipsisConversion, Standard, StandardConversion, UserDefined, and UserDefinedConversion.
| Kind clang::ImplicitConversionSequence::getKind | ( | ) | const [inline] |
Definition at line 390 of file Overload.h.
References isInitialized().
Referenced by clang::Sema::CompareImplicitConversionSequences(), getKindRank(), isAmbiguous(), isBad(), isEllipsis(), isStandard(), isUserDefined(), and clang::Sema::PerformImplicitConversion().
| unsigned clang::ImplicitConversionSequence::getKindRank | ( | ) | const [inline] |
Return a ranking of the implicit conversion sequence kind, where smaller ranks represent better conversion sequences.
In particular, this routine gives user-defined conversion sequences and ambiguous conversion sequences the same rank, per C++ [over.best.ics]p10.
Definition at line 402 of file Overload.h.
References AmbiguousConversion, BadConversion, EllipsisConversion, getKind(), StandardConversion, and UserDefinedConversion.
Referenced by clang::Sema::CompareImplicitConversionSequences().
| bool clang::ImplicitConversionSequence::isAmbiguous | ( | ) | const [inline] |
Definition at line 424 of file Overload.h.
References AmbiguousConversion, and getKind().
| bool clang::ImplicitConversionSequence::isBad | ( | ) | const [inline] |
Definition at line 421 of file Overload.h.
References BadConversion, and getKind().
Referenced by clang::Sema::AddSurrogateCandidate(), clang::Sema::PerformContextuallyConvertToBool(), clang::Sema::PerformContextuallyConvertToObjCId(), clang::Sema::PerformObjectArgumentInitialization(), and clang::Sema::TryImplicitConversion().
| bool clang::ImplicitConversionSequence::isEllipsis | ( | ) | const [inline] |
Definition at line 423 of file Overload.h.
References EllipsisConversion, and getKind().
| 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 430 of file Overload.h.
Referenced by getKind().
| bool clang::ImplicitConversionSequence::isStandard | ( | ) | const [inline] |
Definition at line 422 of file Overload.h.
References getKind(), and StandardConversion.
Referenced by clang::Sema::CompareImplicitConversionSequences().
| bool clang::ImplicitConversionSequence::isUserDefined | ( | ) | const [inline] |
Definition at line 425 of file Overload.h.
References getKind(), and UserDefinedConversion.
Referenced by clang::Sema::CompareImplicitConversionSequences(), and clang::Sema::TryImplicitConversion().
| ImplicitConversionSequence& clang::ImplicitConversionSequence::operator= | ( | const ImplicitConversionSequence & | Other | ) | [inline] |
Definition at line 384 of file Overload.h.
References ImplicitConversionSequence().
| void clang::ImplicitConversionSequence::setAmbiguous | ( | ) | [inline] |
Definition at line 449 of file Overload.h.
References Ambiguous, AmbiguousConversion, and clang::AmbiguousConversionSequence::construct().
Referenced by clang::FindConversionForRefInit(), and clang::Sema::TryImplicitConversion().
| void clang::ImplicitConversionSequence::setBad | ( | BadConversionSequence::FailureKind | Failure, | |
| QualType | FromType, | |||
| QualType | ToType | |||
| ) | [inline] |
Sets this sequence as a bad conversion for an implicit argument.
Definition at line 440 of file Overload.h.
References Bad, BadConversion, and clang::BadConversionSequence::init().
| void clang::ImplicitConversionSequence::setBad | ( | BadConversionSequence::FailureKind | Failure, | |
| Expr * | FromExpr, | |||
| QualType | ToType | |||
| ) | [inline] |
Sets this sequence as a bad conversion for an explicit argument.
Definition at line 433 of file Overload.h.
References Bad, BadConversion, and clang::BadConversionSequence::init().
Referenced by clang::Sema::TryImplicitConversion(), clang::Sema::TryObjectArgumentInitialization(), and clang::TryReferenceInit().
| void clang::ImplicitConversionSequence::setEllipsis | ( | ) | [inline] |
Definition at line 447 of file Overload.h.
References EllipsisConversion.
| void clang::ImplicitConversionSequence::setStandard | ( | ) | [inline] |
Definition at line 446 of file Overload.h.
References StandardConversion.
Referenced by clang::Sema::TryImplicitConversion(), clang::Sema::TryObjectArgumentInitialization(), TryRefInitWithConversionFunction(), and TryUserDefinedConversion().
| void clang::ImplicitConversionSequence::setUserDefined | ( | ) | [inline] |
Definition at line 448 of file Overload.h.
References UserDefinedConversion.
Referenced by clang::FindConversionForRefInit(), and clang::Sema::TryImplicitConversion().
| union { ... } |
When ConversionKind == AmbiguousConversion, provides the details of the ambiguous conversion.
Definition at line 359 of file Overload.h.
Referenced by clang::Sema::DiagnoseAmbiguousConversion(), clang::FindConversionForRefInit(), ImplicitConversionSequence(), setAmbiguous(), and clang::Sema::TryImplicitConversion().
When ConversionKind == BadConversion, provides the details of the bad conversion.
Definition at line 363 of file Overload.h.
Referenced by ImplicitConversionSequence(), and setBad().
When ConversionKind == StandardConversion, provides the details of the standard conversion sequence.
Definition at line 351 of file Overload.h.
Referenced by clang::Sema::AddSurrogateCandidate(), clang::Sema::CompareImplicitConversionSequences(), DebugPrint(), ImplicitConversionSequence(), clang::Sema::PerformImplicitConversion(), clang::Sema::PerformObjectArgumentInitialization(), clang::Sema::TryImplicitConversion(), clang::Sema::TryObjectArgumentInitialization(), TryRefInitWithConversionFunction(), and TryUserDefinedConversion().
When ConversionKind == UserDefinedConversion, provides the details of the user-defined conversion sequence.
Definition at line 355 of file Overload.h.
Referenced by clang::Sema::CompareImplicitConversionSequences(), DebugPrint(), clang::Sema::DiagnoseMultipleUserDefinedConversion(), clang::FindConversionForRefInit(), ImplicitConversionSequence(), clang::Sema::PerformImplicitConversion(), and clang::Sema::TryImplicitConversion().