clang: clang::StandardConversionSequence Class Reference (original) (raw)
StandardConversionSequence - represents a standard conversion sequence (C++ 13.3.3.1.1). More...
#include "[clang/Sema/Overload.h](Overload%5F8h%5Fsource.html)"
Public Member Functions | |
---|---|
void | setFromType (QualType T) |
void | setToType (unsigned Idx, QualType T) |
void | setAllToTypes (QualType T) |
QualType | getFromType () const |
QualType | getToType (unsigned Idx) const |
void | setAsIdentityConversion () |
StandardConversionSequence - Set the standard conversion sequence to the identity conversion. | |
bool | isIdentityConversion () const |
ImplicitConversionRank | getRank () const |
getRank - Retrieve the rank of this standard conversion sequence (C++ 13.3.3.1.1p3). | |
NarrowingKind | getNarrowingKind (ASTContext &Context, const Expr *Converted, APValue &ConstantValue, QualType &ConstantType, bool IgnoreFloatToIntegralConversion=false) const |
Check if this standard conversion sequence represents a narrowing conversion, according to C++11 [dcl.init.list]p7. | |
bool | isPointerConversionToBool () const |
isPointerConversionToBool - Determines whether this conversion is a conversion of a pointer or pointer-to-member to bool. | |
bool | isPointerConversionToVoidPointer (ASTContext &Context) const |
isPointerConversionToVoidPointer - Determines whether this conversion is a conversion of a pointer to a void pointer. | |
void | dump () const |
dump - Print this standard conversion sequence to standard error. | |
Public Attributes | |
---|---|
ImplicitConversionKind | First: 8 |
First – The first conversion can be an lvalue-to-rvalue conversion, array-to-pointer conversion, or function-to-pointer conversion. | |
ImplicitConversionKind | Second: 8 |
Second - The second conversion can be an integral promotion, floating point promotion, integral conversion, floating point conversion, floating-integral conversion, pointer conversion, pointer-to-member conversion, or boolean conversion. | |
ImplicitConversionKind | Dimension: 8 |
Dimension - Between the second and third conversion a vector or matrix dimension conversion may occur. | |
ImplicitConversionKind | Third: 8 |
Third - The third conversion can be a qualification conversion or a function conversion. | |
unsigned | DeprecatedStringLiteralToCharPtr: 1 |
Whether this is the deprecated conversion of a string literal to a pointer to non-const character data (C++ 4.2p2). | |
unsigned | QualificationIncludesObjCLifetime: 1 |
Whether the qualification conversion involves a change in the Objective-C lifetime (for automatic reference counting). | |
unsigned | IncompatibleObjC: 1 |
IncompatibleObjC - Whether this is an Objective-C conversion that we should warn about (if we actually use it). | |
unsigned | ReferenceBinding: 1 |
ReferenceBinding - True when this is a reference binding (C++ [over.ics.ref]). | |
unsigned | DirectBinding: 1 |
DirectBinding - True when this is a reference binding that is a direct binding (C++ [dcl.init.ref]). | |
unsigned | IsLvalueReference: 1 |
Whether this is an lvalue reference binding (otherwise, it's an rvalue reference binding). | |
unsigned | BindsToFunctionLvalue: 1 |
Whether we're binding to a function lvalue. | |
unsigned | BindsToRvalue: 1 |
Whether we're binding to an rvalue. | |
unsigned | BindsImplicitObjectArgumentWithoutRefQualifier: 1 |
Whether this binds an implicit object argument to a non-static member function without a ref-qualifier. | |
unsigned | ObjCLifetimeConversionBinding: 1 |
Whether this binds a reference to an object with a different Objective-C lifetime qualifier. | |
void * | FromTypePtr |
FromType - The type that this conversion is converting from. | |
void * | ToTypePtrs [3] |
ToType - The types that this conversion is converting to in each step. | |
CXXConstructorDecl * | CopyConstructor |
CopyConstructor - The copy constructor that is used to perform this conversion, when the conversion is actually just the initialization of an object via copy constructor. | |
DeclAccessPair | FoundCopyConstructor |
StandardConversionSequence - represents a standard conversion sequence (C++ 13.3.3.1.1).
A standard conversion sequence contains between zero and three conversions. If a particular conversion is not needed, it will be set to the identity conversion (ICK_Identity).
Definition at line 292 of file Overload.h.
◆ dump()
LLVM_DUMP_METHOD void StandardConversionSequence::dump | ( | ) | const |
---|
◆ getFromType()
QualType clang::StandardConversionSequence::getFromType ( ) const | inline |
---|
◆ getNarrowingKind()
Check if this standard conversion sequence represents a narrowing conversion, according to C++11 [dcl.init.list]p7.
Parameters
Ctx | The AST context. |
---|---|
Converted | The result of applying this standard conversion sequence. |
ConstantValue | If this is an NK_Constant_Narrowing conversion, the value of the expression prior to the narrowing conversion. |
ConstantType | If this is an NK_Constant_Narrowing conversion, the type of the expression prior to the narrowing conversion. |
IgnoreFloatToIntegralConversion | If true type-narrowing conversions from floating point types to integral types should be ignored. |
Definition at line 356 of file SemaOverload.cpp.
References clang::Type::getAs(), clang::APValue::getFloat(), clang::ASTContext::getFloatingTypeOrder(), clang::ASTContext::getFloatTypeSemantics(), clang::ASTContext::getIntWidth(), clang::ASTContext::getLangOpts(), getToType(), clang::ICK_Boolean_Conversion, clang::ICK_Complex_Real, clang::ICK_Floating_Conversion, clang::ICK_Floating_Integral, clang::ICK_Floating_Promotion, clang::ICK_Integral_Conversion, IgnoreNarrowingConversion(), clang::Initializer, clang::Type::isComplexType(), clang::APValue::isFloat(), clang::Type::isIntegralOrUnscopedEnumerationType(), clang::Type::isIntegralType(), clang::Type::isRealFloatingType(), clang::Type::isSignedIntegerOrEnumerationType(), clang::NK_Constant_Narrowing, clang::NK_Dependent_Narrowing, clang::NK_Not_Narrowing, clang::NK_Type_Narrowing, clang::NK_Variable_Narrowing, clang::Result, Second, and clang::Expr::EvalResult::Val.
Referenced by BuildConvertedConstantExpression(), CheckC23ConstexprInitConversion(), checkThreeWayNarrowingConversion(), and DiagnoseNarrowingInInitList().
◆ getRank()
◆ getToType()
QualType clang::StandardConversionSequence::getToType ( unsigned Idx) const | inline |
---|
Definition at line 398 of file Overload.h.
References clang::QualType::getFromOpaquePtr(), and ToTypePtrs.
Referenced by CheckConvertedConstantConversions(), CompareDerivedToBaseConversions(), CompareQualificationConversions(), CompareStandardConversionSequences(), compareStandardConversionSubsets(), getFixedEnumPromtion(), getNarrowingKind(), clang::InitializationSequence::InitializeFrom(), isPointerConversionToBool(), isPointerConversionToVoidPointer(), tryAtomicConversion(), TryListInitialization(), and TryRefInitWithConversionFunction().
◆ isIdentityConversion()
bool clang::StandardConversionSequence::isIdentityConversion ( ) const | inline |
---|
◆ isPointerConversionToBool()
bool StandardConversionSequence::isPointerConversionToBool | ( | ) | const |
---|
◆ isPointerConversionToVoidPointer()
bool StandardConversionSequence::isPointerConversionToVoidPointer | ( | ASTContext & | Context | ) | const |
---|
isPointerConversionToVoidPointer - Determines whether this conversion is a conversion of a pointer to a void pointer.
This is used as part of the ranking of standard conversion sequences (C++ 13.3.3.2p4).
Definition at line 293 of file SemaOverload.cpp.
References First, clang::ASTContext::getArrayDecayedType(), clang::Type::getAs(), getFromType(), clang::Type::getPointeeType(), getToType(), clang::ICK_Array_To_Pointer, clang::ICK_Pointer_Conversion, clang::Type::isAnyPointerType(), clang::Type::isVoidType(), and Second.
Referenced by CompareStandardConversionSequences().
◆ setAllToTypes()
void clang::StandardConversionSequence::setAllToTypes ( QualType T) | inline |
---|
◆ setAsIdentityConversion()
void StandardConversionSequence::setAsIdentityConversion | ( | ) |
---|
StandardConversionSequence - Set the standard conversion sequence to the identity conversion.
Definition at line 235 of file SemaOverload.cpp.
References BindsImplicitObjectArgumentWithoutRefQualifier, BindsToFunctionLvalue, BindsToRvalue, CopyConstructor, DeprecatedStringLiteralToCharPtr, Dimension, DirectBinding, First, clang::ICK_Identity, IsLvalueReference, ObjCLifetimeConversionBinding, QualificationIncludesObjCLifetime, ReferenceBinding, Second, and Third.
Referenced by clang::Sema::AddConversionCandidate(), checkThreeWayNarrowingConversion(), clang::ImplicitConversionSequence::getNullptrToBool(), clang::ImplicitConversionSequence::ImplicitConversionSequence(), clang::InitializationSequence::InitializeFrom(), IsInitializerListConstructorConversion(), IsStandardConversion(), IsUserDefinedConversion(), clang::ImplicitConversionSequence::setAsIdentityConversion(), TryImplicitConversion(), TryListInitialization(), tryObjCWritebackConversion(), TryObjectArgumentInitialization(), and TryUserDefinedConversion().
◆ setFromType()
void clang::StandardConversionSequence::setFromType ( QualType T) | inline |
---|
Definition at line 381 of file Overload.h.
References FromTypePtr, and clang::T.
Referenced by clang::Sema::AddConversionCandidate(), clang::ImplicitConversionSequence::getNullptrToBool(), IsInitializerListConstructorConversion(), IsStandardConversion(), IsUserDefinedConversion(), clang::ImplicitConversionSequence::setAsIdentityConversion(), TryImplicitConversion(), TryListInitialization(), TryObjectArgumentInitialization(), TryReferenceInit(), and TryUserDefinedConversion().
◆ setToType()
void clang::StandardConversionSequence::setToType ( unsigned Idx, QualType T ) | inline |
---|
◆ BindsImplicitObjectArgumentWithoutRefQualifier
unsigned clang::StandardConversionSequence::BindsImplicitObjectArgumentWithoutRefQualifier
◆ BindsToFunctionLvalue
unsigned clang::StandardConversionSequence::BindsToFunctionLvalue
◆ BindsToRvalue
unsigned clang::StandardConversionSequence::BindsToRvalue
◆ CopyConstructor
◆ DeprecatedStringLiteralToCharPtr
unsigned clang::StandardConversionSequence::DeprecatedStringLiteralToCharPtr
◆ Dimension
◆ DirectBinding
unsigned clang::StandardConversionSequence::DirectBinding
◆ First
First – The first conversion can be an lvalue-to-rvalue conversion, array-to-pointer conversion, or function-to-pointer conversion.
Definition at line 297 of file Overload.h.
Referenced by clang::Sema::AddConversionCandidate(), CompareDerivedToBaseConversions(), CompareQualificationConversions(), CompareStandardConversionSequences(), dump(), clang::UserDefinedConversionSequence::dump(), clang::ImplicitConversionSequence::getNullptrToBool(), getRank(), clang::InitializationSequence::InitializeFrom(), isPointerConversionToBool(), isPointerConversionToVoidPointer(), IsStandardConversion(), clang::Sema::PerformImplicitConversion(), setAsIdentityConversion(), TryListInitialization(), tryObjCWritebackConversion(), and TryReferenceInit().
◆ FoundCopyConstructor
DeclAccessPair clang::StandardConversionSequence::FoundCopyConstructor
◆ FromTypePtr
void* clang::StandardConversionSequence::FromTypePtr
◆ IncompatibleObjC
unsigned clang::StandardConversionSequence::IncompatibleObjC
◆ IsLvalueReference
unsigned clang::StandardConversionSequence::IsLvalueReference
◆ ObjCLifetimeConversionBinding
unsigned clang::StandardConversionSequence::ObjCLifetimeConversionBinding
◆ QualificationIncludesObjCLifetime
unsigned clang::StandardConversionSequence::QualificationIncludesObjCLifetime
◆ ReferenceBinding
unsigned clang::StandardConversionSequence::ReferenceBinding
◆ Second
Second - The second conversion can be an integral promotion, floating point promotion, integral conversion, floating point conversion, floating-integral conversion, pointer conversion, pointer-to-member conversion, or boolean conversion.
Definition at line 303 of file Overload.h.
Referenced by clang::Sema::AddConversionCandidate(), CheckConvertedConstantConversions(), checkThreeWayNarrowingConversion(), CompareDerivedToBaseConversions(), CompareQualificationConversions(), CompareStandardConversionSequences(), compareStandardConversionSubsets(), dropPointerConversion(), dump(), clang::UserDefinedConversionSequence::dump(), getFixedEnumPromtion(), getNarrowingKind(), clang::ImplicitConversionSequence::getNullptrToBool(), getRank(), clang::InitializationSequence::InitializeFrom(), isIdentityConversion(), isPointerConversionToVoidPointer(), IsStandardConversion(), clang::Sema::PerformImplicitConversion(), clang::Sema::PerformImplicitObjectArgumentInitialization(), clang::Sema::SelectBestMethod(), setAsIdentityConversion(), tryAtomicConversion(), TryImplicitConversion(), TryListInitialization(), TryObjectArgumentInitialization(), TryReferenceInit(), and TryUserDefinedConversion().
◆ Third
Third - The third conversion can be a qualification conversion or a function conversion.
Definition at line 312 of file Overload.h.
Referenced by CompareQualificationConversions(), compareStandardConversionSubsets(), dropPointerConversion(), dump(), clang::UserDefinedConversionSequence::dump(), getRank(), isIdentityConversion(), IsStandardConversion(), clang::Sema::PerformImplicitConversion(), setAsIdentityConversion(), tryAtomicConversion(), and TryReferenceInit().
◆ ToTypePtrs
void* clang::StandardConversionSequence::ToTypePtrs[3]
The documentation for this class was generated from the following files:
- include/clang/Sema/Overload.h
- lib/Sema/SemaOverload.cpp