Describes the sequence of initializations required to initialize a given object or reference with a set of arguments. More...
#include "clang/Sema/Initialization.h"
Describes the sequence of initializations required to initialize a given object or reference with a set of arguments.
Definition at line 802 of file Initialization.h.
◆ step_iterator ◆ step_range ◆ FailureKindDescribes why initialization failed.
Enumerator FK_TooManyInitsForReferenceToo many initializers provided for a reference.
FK_ParenthesizedListInitForReferenceReference initialized from a parenthesized initializer list.
FK_ArrayNeedsInitListArray must be initialized with an initializer list.
FK_ArrayNeedsInitListOrStringLiteralArray must be initialized with an initializer list or a string literal.
FK_ArrayNeedsInitListOrWideStringLiteralArray must be initialized with an initializer list or a wide string literal.
FK_NarrowStringIntoWideCharArrayInitializing a wide char array with narrow string literal.
FK_WideStringIntoCharArrayInitializing char array with wide string literal.
FK_IncompatWideStringIntoWideCharInitializing wide char array with incompatible wide string literal.
FK_PlainStringIntoUTF8CharInitializing char8_t array with plain string literal.
FK_UTF8StringIntoPlainCharInitializing char array with UTF-8 string literal.
FK_ArrayTypeMismatchArray type mismatch.
FK_NonConstantArrayInitNon-constant array initializer.
FK_AddressOfOverloadFailedCannot resolve the address of an overloaded function.
FK_ReferenceInitOverloadFailedOverloading due to reference initialization failed.
FK_NonConstLValueReferenceBindingToTemporaryNon-const lvalue reference binding to a temporary.
FK_NonConstLValueReferenceBindingToBitfieldNon-const lvalue reference binding to a bit-field.
FK_NonConstLValueReferenceBindingToVectorElementNon-const lvalue reference binding to a vector element.
FK_NonConstLValueReferenceBindingToMatrixElementNon-const lvalue reference binding to a matrix element.
FK_NonConstLValueReferenceBindingToUnrelatedNon-const lvalue reference binding to an lvalue of unrelated type.
FK_RValueReferenceBindingToLValueRvalue reference binding to an lvalue.
FK_ReferenceInitDropsQualifiersReference binding drops qualifiers.
FK_ReferenceAddrspaceMismatchTemporaryReference with mismatching address space binding to temporary.
FK_ReferenceInitFailedReference binding failed.
FK_ConversionFailedImplicit conversion failed.
FK_ConversionFromPropertyFailedImplicit conversion failed.
FK_TooManyInitsForScalarToo many initializers for scalar.
FK_ParenthesizedListInitForScalarScalar initialized from a parenthesized initializer list.
FK_ReferenceBindingToInitListReference initialization from an initializer list.
FK_InitListBadDestinationTypeInitialization of some unused destination type with an initializer list.
FK_UserConversionOverloadFailedOverloading for a user-defined conversion failed.
FK_ConstructorOverloadFailedOverloading for initialization by constructor failed.
FK_ListConstructorOverloadFailedOverloading for list-initialization by constructor failed.
FK_DefaultInitOfConstDefault-initialization of a 'const' object.
FK_IncompleteInitialization of an incomplete type.
FK_VariableLengthArrayHasInitializerVariable-length array must not have an initializer.
FK_ListInitializationFailedList initialization failed at some point.
FK_PlaceholderTypeInitializer has a placeholder type which cannot be resolved by initialization.
FK_AddressOfUnaddressableFunctionTrying to take the address of a function that doesn't support having its address taken.
FK_ExplicitConstructorList-copy-initialization chose an explicit constructor.
FK_ParenthesizedListInitFailedParenthesized list initialization failed at some point.
This is a C++20 feature.
FK_DesignatedInitForNonAggregateDefinition at line 996 of file Initialization.h.
◆ SequenceKindDescribes the kind of initialization sequence computed.
Enumerator FailedSequenceA failed initialization sequence.
The failure kind tells what happened.
DependentSequenceA dependent initialization, which could not be type-checked due to the presence of dependent types or dependently-typed expressions.
NormalSequenceA normal sequence.
Definition at line 805 of file Initialization.h.
◆ StepKindDescribes the kind of a particular step in an initialization sequence.
Enumerator SK_ResolveAddressOfOverloadedFunctionResolve the address of an overloaded function to a specific function declaration.
SK_CastDerivedToBasePRValuePerform a derived-to-base cast, producing an rvalue.
SK_CastDerivedToBaseXValuePerform a derived-to-base cast, producing an xvalue.
SK_CastDerivedToBaseLValuePerform a derived-to-base cast, producing an lvalue.
SK_BindReferenceReference binding to an lvalue.
SK_BindReferenceToTemporaryReference binding to a temporary.
SK_ExtraneousCopyToTemporaryAn optional copy of a temporary object to another temporary object, which is permitted (but not required) by C++98/03 but not C++0x.
SK_FinalCopyDirect-initialization from a reference-related object in the final stage of class copy-initialization.
SK_UserConversionPerform a user-defined conversion, either via a conversion function or via a constructor.
SK_QualificationConversionPRValuePerform a qualification conversion, producing a prvalue.
SK_QualificationConversionXValuePerform a qualification conversion, producing an xvalue.
SK_QualificationConversionLValuePerform a qualification conversion, producing an lvalue.
SK_FunctionReferenceConversionPerform a function reference conversion, see [dcl.init.ref]p4.
SK_AtomicConversionPerform a conversion adding _Atomic to a type.
SK_ConversionSequencePerform an implicit conversion sequence.
SK_ConversionSequenceNoNarrowingPerform an implicit conversion sequence without narrowing.
SK_ListInitializationPerform list-initialization without a constructor.
SK_UnwrapInitListUnwrap the single-element initializer list for a reference.
SK_RewrapInitListRewrap the single-element initializer list for a reference.
SK_ConstructorInitializationPerform initialization via a constructor.
SK_ConstructorInitializationFromListPerform initialization via a constructor, taking arguments from a single InitListExpr.
SK_ZeroInitializationZero-initialize the object.
SK_CAssignmentC assignment.
SK_StringInitInitialization by string.
SK_ObjCObjectConversionAn initialization that "converts" an Objective-C object (not a point to an object) to another Objective-C object type.
SK_ArrayLoopIndexArray indexing for initialization by elementwise copy.
SK_ArrayLoopInitArray initialization by elementwise copy.
SK_ArrayInitArray initialization (from an array rvalue).
SK_GNUArrayInitArray initialization (from an array rvalue) as a GNU extension.
SK_ParenthesizedArrayInitArray initialization from a parenthesized initializer list.
This is a GNU C++ extension.
SK_PassByIndirectCopyRestorePass an object by indirect copy-and-restore.
SK_PassByIndirectRestorePass an object by indirect restore.
SK_ProduceObjCObjectProduce an Objective-C object pointer.
SK_StdInitializerListConstruct a std::initializer_list from an initializer list.
SK_StdInitializerListConstructorCallPerform initialization via a constructor taking a single std::initializer_list argument.
SK_OCLSamplerInitInitialize an OpenCL sampler from an integer.
SK_OCLZeroOpaqueTypeInitialize an opaque OpenCL type (event_t, queue_t, etc.) with zero.
SK_ParenthesizedListInitInitialize an aggreagate with parenthesized list of values.
This is a C++20 feature.
Definition at line 821 of file Initialization.h.
◆ InitializationSequence()Try to perform initialization of the given entity, creating a record of the steps required to perform the initialization.
The generated initialization sequence will either contain enough information to diagnose
Definition at line 6370 of file SemaInit.cpp.
References InitializeFrom().
◆ ~InitializationSequence() InitializationSequence::~InitializationSequence ( )Definition at line 6851 of file SemaInit.cpp.
◆ AddAddressOverloadResolutionStep() ◆ AddArrayInitLoopStep() void InitializationSequence::AddArrayInitLoopStep ( QualType T, QualType EltTy ) ◆ AddArrayInitStep() void InitializationSequence::AddArrayInitStep ( QualType T, bool IsGNUExtension ) ◆ AddAtomicConversionStep() void InitializationSequence::AddAtomicConversionStep ( QualType Ty ) ◆ AddCAssignmentStep() void InitializationSequence::AddCAssignmentStep ( QualType T ) ◆ AddConstructorInitializationStep() ◆ AddConversionSequenceStep() ◆ AddDerivedToBaseCastStep() ◆ AddExtraneousCopyToTemporary() void InitializationSequence::AddExtraneousCopyToTemporary ( QualType T )Add a new step that makes an extraneous copy of the input to a temporary of the same class type.
This extraneous copy only occurs during reference binding in C++98/03, where we are permitted (but not required) to introduce an extra copy. At a bare minimum, we must check that we could call the copy constructor, and produce a diagnostic if the copy constructor is inaccessible or no copy constructor matches.
Definition at line 3936 of file SemaInit.cpp.
References SK_ExtraneousCopyToTemporary, and clang::T.
Referenced by TryReferenceInitializationCore().
◆ AddFinalCopy() void InitializationSequence::AddFinalCopy ( QualType T ) ◆ AddFunctionReferenceConversionStep() void InitializationSequence::AddFunctionReferenceConversionStep ( QualType Ty ) ◆ AddListInitializationStep() void InitializationSequence::AddListInitializationStep ( QualType T ) ◆ AddObjCObjectConversionStep() void InitializationSequence::AddObjCObjectConversionStep ( QualType T ) ◆ AddOCLSamplerInitStep() void InitializationSequence::AddOCLSamplerInitStep ( QualType T ) ◆ AddOCLZeroOpaqueTypeStep() void InitializationSequence::AddOCLZeroOpaqueTypeStep ( QualType T ) ◆ AddParenthesizedArrayInitStep() void InitializationSequence::AddParenthesizedArrayInitStep ( QualType T ) ◆ AddParenthesizedListInitStep() void InitializationSequence::AddParenthesizedListInitStep ( QualType T ) ◆ AddPassByIndirectCopyRestoreStep() void InitializationSequence::AddPassByIndirectCopyRestoreStep ( QualType T, bool shouldCopy ) ◆ AddProduceObjCObjectStep() void InitializationSequence::AddProduceObjCObjectStep ( QualType T ) ◆ AddQualificationConversionStep() ◆ AddReferenceBindingStep() void InitializationSequence::AddReferenceBindingStep ( QualType T, bool BindingTemporary ) ◆ AddStdInitializerListConstructionStep() void InitializationSequence::AddStdInitializerListConstructionStep ( QualType T ) ◆ AddStringInitStep() void InitializationSequence::AddStringInitStep ( QualType T ) ◆ AddUnwrapInitListInitStep() void InitializationSequence::AddUnwrapInitListInitStep ( InitListExpr * Syntactic ) ◆ AddUserConversionStep() ◆ AddZeroInitializationStep() void InitializationSequence::AddZeroInitializationStep ( QualType T ) ◆ Diagnose()Diagnose an potentially-invalid initialization sequence.
Definition at line 8727 of file SemaInit.cpp.
References clang::OverloadCandidateSet::BestViableFunction(), clang::Type::castAs(), clang::Sema::checkAddressOfFunctionIsAvailable(), clang::OverloadCandidateSet::CompleteCandidates(), clang::Sema::Context, clang::FixItHint::CreateInsertion(), clang::Sema::CurContext, clang::SemaBase::Diag(), diagnoseListInit(), DiagnoseUninitializedReference(), clang::InitializedEntity::EK_Base, clang::InitializedEntity::EK_Member, clang::InitializedEntity::EK_ParenAggInitMember, clang::InitializedEntity::EK_Result, emitBadConversionNotes(), Failed(), clang::Sema::FixOverloadedFunctionReference(), FK_AddressOfOverloadFailed, FK_AddressOfUnaddressableFunction, FK_ArrayNeedsInitList, FK_ArrayNeedsInitListOrStringLiteral, FK_ArrayNeedsInitListOrWideStringLiteral, FK_ArrayTypeMismatch, FK_ConstructorOverloadFailed, FK_ConversionFailed, FK_ConversionFromPropertyFailed, FK_DefaultInitOfConst, FK_DesignatedInitForNonAggregate, FK_ExplicitConstructor, FK_IncompatWideStringIntoWideChar, FK_Incomplete, FK_InitListBadDestinationType, FK_ListConstructorOverloadFailed, FK_ListInitializationFailed, FK_NarrowStringIntoWideCharArray, FK_NonConstantArrayInit, FK_NonConstLValueReferenceBindingToBitfield, FK_NonConstLValueReferenceBindingToMatrixElement, FK_NonConstLValueReferenceBindingToTemporary, FK_NonConstLValueReferenceBindingToUnrelated, FK_NonConstLValueReferenceBindingToVectorElement, FK_ParenthesizedListInitFailed, FK_ParenthesizedListInitForReference, FK_ParenthesizedListInitForScalar, FK_PlaceholderType, FK_PlainStringIntoUTF8Char, FK_ReferenceAddrspaceMismatchTemporary, FK_ReferenceBindingToInitList, FK_ReferenceInitDropsQualifiers, FK_ReferenceInitFailed, FK_ReferenceInitOverloadFailed, FK_RValueReferenceBindingToLValue, FK_TooManyInitsForReference, FK_TooManyInitsForScalar, FK_UserConversionOverloadFailed, FK_UTF8StringIntoPlainChar, FK_VariableLengthArrayHasInitializer, FK_WideStringIntoCharArray, clang::Found, clang::Qualifiers::fromCVRMask(), clang::ActionResult< PtrTy, Compress >::get(), clang::Type::getAs(), clang::Sema::getASTContext(), clang::InitializedEntity::getBaseSpecifier(), clang::SourceRange::getBegin(), clang::Stmt::getBeginLoc(), clang::Qualifiers::getCVRQualifiers(), clang::InitializedEntity::getDecl(), clang::NamedDecl::getDeclName(), clang::InitListExpr::getInits(), clang::InitializedEntity::getKind(), clang::Sema::getLangOpts(), clang::Decl::getLocation(), clang::Sema::getLocForEndOfToken(), clang::InitializedEntity::getName(), clang::QualType::getNonReferenceType(), clang::InitListExpr::getNumInits(), clang::QualType::getQualifiers(), clang::Stmt::getSourceRange(), clang::Sema::getSpecialMember(), clang::StringLiteral::getString(), clang::ASTContext::getTagDeclType(), clang::CXXBaseSpecifier::getType(), clang::Expr::getType(), clang::InitializedEntity::getType(), clang::ASTContext::getTypeDeclType(), clang::Sema::HandleFunctionTypeMismatch(), clang::Qualifiers::hasQualifiers(), clang::InitializationKind::IK_Default, clang::InitializationKind::IK_Value, int, clang::Qualifiers::isAddressSpaceSupersetOf(), clang::Sema::isImplicitlyDeleted(), clang::Type::isIncompleteType(), clang::Expr::isLValue(), clang::Type::isRecordType(), clang::Type::isReferenceType(), clang::Type::isSignedIntegerType(), clang::QualType::isVolatileQualified(), clang::OverloadCandidateSet::NoteCandidates(), clang::Sema::NoteDeletedFunction(), clang::OCD_AllCandidates, clang::OCD_AmbiguousCandidates, clang::OR_Ambiguous, clang::OR_Deleted, clang::OR_No_Viable_Function, clang::OR_Success, clang::ASTContext::OverloadTy, clang::SemaBase::PDiag(), clang::Sema::RequireCompleteType(), clang::Sema::ResolveAddressOfOverloadedFunction(), clang::SourceRange::setBegin(), and TryOrBuildParenListInitialization().
Referenced by Perform(), TryClassUnification(), and TryOrBuildParenListInitialization().
◆ dump() [1/2] void InitializationSequence::dump ( ) constDump a representation of this initialization sequence to standard error, for debugging purposes.
Definition at line 9583 of file SemaInit.cpp.
References dump().
Referenced by dump().
◆ dump() [2/2] void InitializationSequence::dump ( raw_ostream & OS ) constDump a representation of this initialization sequence to the given stream, for debugging purposes.
Definition at line 9233 of file SemaInit.cpp.
References DependentSequence, FailedSequence, FK_AddressOfOverloadFailed, FK_AddressOfUnaddressableFunction, FK_ArrayNeedsInitList, FK_ArrayNeedsInitListOrStringLiteral, FK_ArrayNeedsInitListOrWideStringLiteral, FK_ArrayTypeMismatch, FK_ConstructorOverloadFailed, FK_ConversionFailed, FK_ConversionFromPropertyFailed, FK_DefaultInitOfConst, FK_DesignatedInitForNonAggregate, FK_ExplicitConstructor, FK_IncompatWideStringIntoWideChar, FK_Incomplete, FK_InitListBadDestinationType, FK_ListConstructorOverloadFailed, FK_ListInitializationFailed, FK_NarrowStringIntoWideCharArray, FK_NonConstantArrayInit, FK_NonConstLValueReferenceBindingToBitfield, FK_NonConstLValueReferenceBindingToMatrixElement, FK_NonConstLValueReferenceBindingToTemporary, FK_NonConstLValueReferenceBindingToUnrelated, FK_NonConstLValueReferenceBindingToVectorElement, FK_ParenthesizedListInitFailed, FK_ParenthesizedListInitForReference, FK_ParenthesizedListInitForScalar, FK_PlaceholderType, FK_PlainStringIntoUTF8Char, FK_ReferenceAddrspaceMismatchTemporary, FK_ReferenceBindingToInitList, FK_ReferenceInitDropsQualifiers, FK_ReferenceInitFailed, FK_ReferenceInitOverloadFailed, FK_RValueReferenceBindingToLValue, FK_TooManyInitsForReference, FK_TooManyInitsForScalar, FK_UserConversionOverloadFailed, FK_UTF8StringIntoPlainChar, FK_VariableLengthArrayHasInitializer, FK_WideStringIntoCharArray, NormalSequence, SK_ArrayInit, SK_ArrayLoopIndex, SK_ArrayLoopInit, SK_AtomicConversion, SK_BindReference, SK_BindReferenceToTemporary, SK_CAssignment, SK_CastDerivedToBaseLValue, SK_CastDerivedToBasePRValue, SK_CastDerivedToBaseXValue, SK_ConstructorInitialization, SK_ConstructorInitializationFromList, SK_ConversionSequence, SK_ConversionSequenceNoNarrowing, SK_ExtraneousCopyToTemporary, SK_FinalCopy, SK_FunctionReferenceConversion, SK_GNUArrayInit, SK_ListInitialization, SK_ObjCObjectConversion, SK_OCLSamplerInit, SK_OCLZeroOpaqueType, SK_ParenthesizedArrayInit, SK_ParenthesizedListInit, SK_PassByIndirectCopyRestore, SK_PassByIndirectRestore, SK_ProduceObjCObject, SK_QualificationConversionLValue, SK_QualificationConversionPRValue, SK_QualificationConversionXValue, SK_ResolveAddressOfOverloadedFunction, SK_RewrapInitList, SK_StdInitializerList, SK_StdInitializerListConstructorCall, SK_StringInit, SK_UnwrapInitList, SK_UserConversion, SK_ZeroInitialization, step_begin(), and step_end().
◆ Failed() bool clang::InitializationSequence::Failed ( ) const inline ◆ getFailedCandidateSet() ◆ getFailedOverloadResult() ◆ getFailureKind() FailureKind clang::InitializationSequence::getFailureKind ( ) const inline ◆ getKind() enum SequenceKind clang::InitializationSequence::getKind ( ) const inline ◆ InitializeFrom()Definition at line 6426 of file SemaInit.cpp.
References AddArrayInitStep(), AddAtomicConversionStep(), AddCAssignmentStep(), AddConversionSequenceStep(), AddListInitializationStep(), AddParenthesizedArrayInitStep(), AddPassByIndirectCopyRestoreStep(), AddZeroInitializationStep(), clang::Atomic, clang::OverloadCandidateSet::BestViableFunction(), canPerformArrayCopy(), clang::SemaObjC::CheckConversionToObjCLiteral(), clang::SemaObjC::CheckObjCBridgeRelatedConversions(), clang::Sema::CheckPlaceholderExpr(), clang::Sema::Context, clang::IntegerLiteral::Create(), DependentSequence, clang::SemaBase::Diag(), E, clang::InitializedEntity::EK_Member, emitUninitializedExplicitInitFields(), Failed(), clang::StandardConversionSequence::First, FK_AddressOfOverloadFailed, FK_AddressOfUnaddressableFunction, FK_ArrayNeedsInitList, FK_ArrayNeedsInitListOrStringLiteral, FK_ArrayNeedsInitListOrWideStringLiteral, FK_ArrayTypeMismatch, FK_ConstructorOverloadFailed, FK_ConversionFailed, FK_IncompatWideStringIntoWideChar, FK_NarrowStringIntoWideCharArray, FK_NonConstantArrayInit, FK_ParenthesizedListInitForReference, FK_ParenthesizedListInitForScalar, FK_PlaceholderType, FK_PlainStringIntoUTF8Char, FK_TooManyInitsForReference, FK_TooManyInitsForScalar, FK_UTF8StringIntoPlainChar, FK_VariableLengthArrayHasInitializer, FK_WideStringIntoCharArray, clang::Found, clang::ActionResult< PtrTy, Compress >::get(), clang::Type::getAs(), clang::ASTContext::getAsArrayType(), clang::Type::getAsRecordDecl(), clang::Sema::getASTContext(), clang::RecordType::getDecl(), clang::InitializedEntity::getDecl(), clang::ArrayType::getElementType(), getFailedCandidateSet(), getFailureKind(), clang::ASTContext::getIntWidth(), clang::InitializedEntity::getKind(), clang::Sema::getLangOpts(), clang::Decl::getLocation(), clang::ImplicitConversionSequence::getNullptrToBool(), clang::VectorType::getNumElements(), clang::StandardConversionSequence::getToType(), clang::InitializedEntity::getType(), clang::Expr::getValueKind(), clang::Expr::hasAnyTypeDependentArguments(), hasCompatibleArrayTypes(), clang::ASTContext::hasSameUnqualifiedType(), clang::RecordDecl::hasUninitializedExplicitInitFields(), clang::ICK_Array_To_Pointer, clang::ICK_Lvalue_To_Rvalue, clang::ICK_Writeback_Conversion, clang::InitializationKind::IK_Copy, clang::InitializationKind::IK_Default, clang::InitializationKind::IK_Direct, clang::InitializationKind::IK_Value, clang::Initializer, clang::ASTContext::IntTy, clang::Type::isArrayParameterType(), clang::Type::isArrayType(), clang::ImplicitConversionSequence::isBad(), clang::Type::isBooleanType(), clang::Type::isCharType(), clang::Type::isDependentType(), clang::Sema::IsDerivedFrom(), isExprAnUnaddressableFunction(), clang::Type::isExtVectorType(), clang::ActionResult< PtrTy, Compress >::isInvalid(), isLibstdcxxPointerReturnFalseHack(), clang::QualType::isNull(), clang::Type::isNullPtrType(), clang::InitializedEntity::isParameterKind(), clang::Type::isRecordType(), clang::Type::isReferenceType(), clang::ImplicitConversionSequence::isStandard(), IsStringInit(), IsWideCharCompatible(), MaybeProduceObjCObject(), NormalSequence, clang::Sema::ObjC(), clang::Decl::OBJC_TQ_Out, clang::OR_Deleted, clang::ASTContext::OverloadTy, clang::Sema::ResolveAddressOfOverloadedFunction(), clang::StandardConversionSequence::Second, clang::StandardConversionSequence::setAllToTypes(), clang::StandardConversionSequence::setAsIdentityConversion(), SetFailed(), setSequenceKind(), clang::ImplicitConversionSequence::setStandard(), SIF_IncompatWideStringIntoWideChar, SIF_NarrowStringIntoWideChar, SIF_None, SIF_Other, SIF_PlainStringIntoUTF8Char, SIF_UTF8StringIntoPlainChar, SIF_WideStringIntoChar, clang::ImplicitConversionSequence::Standard, TryArrayCopy(), TryConstructorInitialization(), TryDefaultInitialization(), clang::Sema::TryImplicitConversion(), TryListInitialization(), tryObjCWritebackConversion(), TryOCLSamplerInitialization(), TryOCLZeroOpaqueTypeInitialization(), TryOrBuildParenListInitialization(), TryReferenceInitialization(), TryStringLiteralInitialization(), TryUserDefinedConversion(), and TryValueInitialization().
Referenced by InitializationSequence(), TryArrayCopy(), and TryListInitialization().
◆ isAmbiguous() bool InitializationSequence::isAmbiguous ( ) constDetermine whether this initialization failed due to an ambiguity.
Definition at line 3835 of file SemaInit.cpp.
References Failed(), FK_AddressOfOverloadFailed, FK_AddressOfUnaddressableFunction, FK_ArrayNeedsInitList, FK_ArrayNeedsInitListOrStringLiteral, FK_ArrayNeedsInitListOrWideStringLiteral, FK_ArrayTypeMismatch, FK_ConstructorOverloadFailed, FK_ConversionFailed, FK_ConversionFromPropertyFailed, FK_DefaultInitOfConst, FK_DesignatedInitForNonAggregate, FK_ExplicitConstructor, FK_IncompatWideStringIntoWideChar, FK_Incomplete, FK_InitListBadDestinationType, FK_ListConstructorOverloadFailed, FK_ListInitializationFailed, FK_NarrowStringIntoWideCharArray, FK_NonConstantArrayInit, FK_NonConstLValueReferenceBindingToBitfield, FK_NonConstLValueReferenceBindingToMatrixElement, FK_NonConstLValueReferenceBindingToTemporary, FK_NonConstLValueReferenceBindingToUnrelated, FK_NonConstLValueReferenceBindingToVectorElement, FK_ParenthesizedListInitFailed, FK_ParenthesizedListInitForReference, FK_ParenthesizedListInitForScalar, FK_PlaceholderType, FK_PlainStringIntoUTF8Char, FK_ReferenceAddrspaceMismatchTemporary, FK_ReferenceBindingToInitList, FK_ReferenceInitDropsQualifiers, FK_ReferenceInitFailed, FK_ReferenceInitOverloadFailed, FK_RValueReferenceBindingToLValue, FK_TooManyInitsForReference, FK_TooManyInitsForScalar, FK_UserConversionOverloadFailed, FK_UTF8StringIntoPlainChar, FK_VariableLengthArrayHasInitializer, FK_WideStringIntoCharArray, getFailureKind(), and clang::OR_Ambiguous.
Referenced by TryClassUnification().
◆ isConstructorInitialization() bool InitializationSequence::isConstructorInitialization ( ) const ◆ isDirectReferenceBinding() bool InitializationSequence::isDirectReferenceBinding ( ) const ◆ operator bool() clang::InitializationSequence::operator bool ( ) const inlineexplicit ◆ Perform()Perform the actual initialization of the given entity based on the computed initialization sequence.
Definition at line 7639 of file SemaInit.cpp.
References clang::Sema::ActOnParenListExpr(), bool, clang::Sema::BuildCXXConstructExpr(), clang::Sema::BuildCXXMemberCallExpr(), clang::Type::castAs(), clang::Sema::checkAddressOfFunctionIsAvailable(), clang::Sema::CheckAddressOfMemberAccess(), CheckC23ConstexprInitConversion(), clang::Sema::CheckConstructorAccess(), clang::Sema::CheckDerivedToBaseConversion(), clang::Sema::CheckDestructorAccess(), clang::Sema::CheckExceptionSpecCompatibility(), CheckForNullPointerDereference(), checkIndirectCopyRestoreSource(), clang::Sema::checkInitializerLifetime(), clang::Sema::CheckMemberOperatorAccess(), CheckMoveOnConstruction(), clang::Sema::CheckPlaceholderExpr(), clang::Sema::CheckSingleAssignmentConstraints(), CheckStringInit(), clang::Sema::CheckTransparentUnionArgumentConstraints(), clang::Sema::Cleanup, clang::Sema::Compatible, clang::Complete, clang::Sema::CompleteConstructorCall(), clang::Sema::Context, CopyObject(), clang::ImplicitCastExpr::Create(), clang::Sema::CreateBuiltinArraySubscriptExpr(), clang::FixItHint::CreateInsertion(), clang::Sema::CreateMaterializeTemporaryExpr(), clang::CStyleCast, clang::Sema::CurFPFeatureOverrides(), D, DependentSequence, clang::Destructor, clang::SemaBase::Diag(), Diagnose(), clang::Sema::DiagnoseAssignmentResult(), DiagnoseNarrowingInInitList(), clang::Sema::DiagnoseUseOfDecl(), clang::Sema::DiscardMisalignedMemberAddress(), E, clang::InitializedEntity::EK_Base, clang::InitializedEntity::EK_Delegating, clang::InitializedEntity::EK_Member, clang::InitializedEntity::EK_Parameter_CF_Audited, clang::InitializedEntity::EK_ParenAggInitMember, clang::InitializedEntity::EK_Result, clang::InitializedEntity::EK_Variable, clang::Expr::EvaluateAsRValue(), clang::Evaluated, clang::ExprError(), Failed(), clang::Sema::FixOverloadedFunctionReference(), clang::InitializationSequence::Step::F::FoundDecl, clang::InitializationSequence::Step::F::Function, clang::InitializationSequence::Step::Function, clang::FunctionalCast, clang::ActionResult< PtrTy, Compress >::get(), clang::QualType::getAddressSpace(), clang::ActionResult< PtrTy, Compress >::getAs(), clang::Type::getAs(), clang::TypeLoc::getAs(), clang::ASTContext::getAsArrayType(), clang::ASTContext::getAsConstantArrayType(), clang::Type::getAsCXXRecordDecl(), clang::ASTContext::getAsIncompleteArrayType(), getAssignmentAction(), clang::SourceRange::getBegin(), clang::DeclaratorDecl::getBeginLoc(), clang::Decl::getBeginLoc(), clang::Stmt::getBeginLoc(), clang::ASTContext::getConstantArrayType(), clang::InitializedEntity::getDecl(), clang::CXXRecordDecl::getDefinition(), clang::ASTContext::getDependentSizedArrayType(), clang::SourceRange::getEnd(), clang::Expr::getExprLoc(), clang::InitListExpr::getInits(), clang::APValue::getInt(), clang::ASTContext::getIntWidth(), clang::InitializedEntity::getKind(), getKind(), clang::Sema::getLangOpts(), clang::InitListExpr::getLBraceLoc(), clang::ASTContext::getLValueReferenceType(), clang::QualType::getNonLValueExprType(), clang::QualType::getNonReferenceType(), clang::InitListExpr::getNumInits(), clang::Expr::getObjectKind(), clang::Sema::getOpenCLOptions(), clang::Type::getPointeeOrArrayElementType(), clang::InitListExpr::getRBraceLoc(), clang::FunctionDecl::getReturnType(), clang::ASTContext::getRValueReferenceType(), clang::ASTContext::getSizeType(), clang::Stmt::getSourceRange(), clang::MaterializeTemporaryExpr::getStorageDuration(), clang::ASTContext::getTrivialTypeSourceInfo(), clang::ValueDecl::getType(), clang::Expr::getType(), clang::InitializedEntity::getType(), clang::QualType::getTypePtr(), clang::InitializedEntity::getTypeSourceInfo(), clang::QualType::getUnqualifiedType(), clang::Expr::getValueKind(), clang::InitializationSequence::Step::F::HadMultipleCandidates, clang::QualType::hasAddressSpace(), clang::Decl::hasAttr(), clang::ASTContext::hasSameType(), clang::InitializationSequence::Step::ICS, clang::Expr::IgnoreParens(), clang::InitializationKind::IK_Copy, clang::InitializationKind::IK_Direct, clang::InitializationKind::IK_DirectList, clang::InitializationKind::IK_Value, clang::Sema::ImpCastExprToType(), clang::Implicit, clang::Init, clang::InitializedEntity::InitializeTemporary(), initializingConstexprVariable(), clang::EnterExpressionEvaluationContext::InitList, clang::Type::isArrayType(), clang::Type::isAtomicType(), clang::OpenCLOptions::isAvailableOption(), clang::Type::isDependentType(), clang::QualType::isDestructedType(), clang::Type::isEventT(), clang::Type::isExtVectorType(), clang::Type::isFunctionProtoType(), clang::Type::isIncompleteArrayType(), clang::Type::isIntegerType(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::Expr::isLValue(), clang::Type::isLValueReferenceType(), clang::APValue::isNullPointer(), clang::Type::isOCLIntelSubgroupAVCType(), clang::InitializedEntity::isParameterKind(), clang::InitializedEntity::isParamOrTemplateParamKind(), clang::Expr::isPRValue(), clang::Type::isQueueT(), clang::Type::isRecordType(), clang::Type::isReferenceType(), clang::Type::isSamplerT(), clang::ReferenceType::isSpelledAsLValue(), clang::Sema::isStdInitializerList(), clang::InitializationSequence::Step::Kind, Loc, clang::Sema::LookupDestructor(), clang::Sema::MarkFunctionReferenced(), clang::Sema::MaybeBindToTemporary(), clang::Normal, clang::ASTContext::OCLSamplerTy, clang::opencl_global, clang::OtherCast, clang::SemaBase::PDiag(), PerformConstructorInitialization(), clang::Sema::PerformImplicitConversion(), clang::Sema::PerformQualificationConversion(), Range, clang::Sema::RequireNonAbstractType(), clang::Result, clang::SD_Automatic, clang::CleanupInfo::setExprNeedsCleanups(), clang::InitListExpr::setSyntacticForm(), clang::Expr::setType(), clang::Expr::setValueKind(), shouldBindAsTemporary(), shouldDestroyEntity(), SK_ArrayInit, SK_ArrayLoopIndex, SK_ArrayLoopInit, SK_AtomicConversion, SK_BindReference, SK_BindReferenceToTemporary, SK_CAssignment, SK_CastDerivedToBaseLValue, SK_CastDerivedToBasePRValue, SK_CastDerivedToBaseXValue, SK_ConstructorInitialization, SK_ConstructorInitializationFromList, SK_ConversionSequence, SK_ConversionSequenceNoNarrowing, SK_ExtraneousCopyToTemporary, SK_FinalCopy, SK_FunctionReferenceConversion, SK_GNUArrayInit, SK_ListInitialization, SK_ObjCObjectConversion, SK_OCLSamplerInit, SK_OCLZeroOpaqueType, SK_ParenthesizedArrayInit, SK_ParenthesizedListInit, SK_PassByIndirectCopyRestore, SK_PassByIndirectRestore, SK_ProduceObjCObject, SK_QualificationConversionLValue, SK_QualificationConversionPRValue, SK_QualificationConversionXValue, SK_ResolveAddressOfOverloadedFunction, SK_RewrapInitList, SK_StdInitializerList, SK_StdInitializerListConstructorCall, SK_StringInit, SK_UnwrapInitList, SK_UserConversion, SK_ZeroInitialization, step_begin(), step_end(), clang::T, TryOrBuildParenListInitialization(), clang::InitializationSequence::Step::Type, updateGNUCompoundLiteralRValue(), clang::Expr::EvalResult::Val, clang::VK_LValue, clang::VK_PRValue, clang::VK_XValue, clang::QualType::withConst(), and clang::InitializationSequence::Step::WrappingSyntacticList.
Referenced by clang::SemaOpenMP::ActOnOpenMPFirstprivateClause(), clang::Sema::AddInitializerToDecl(), clang::Sema::BuildBaseInitializer(), clang::Sema::BuildCaptureInit(), clang::Sema::BuildCompoundLiteralExpr(), clang::Sema::buildCoroutinePromise(), clang::Sema::BuildCXXNew(), clang::Sema::BuildCXXTypeConstructExpr(), clang::Sema::BuildDelegatingInitializer(), clang::Sema::BuildExceptionDeclaration(), BuildImplicitBaseInitializer(), clang::Sema::buildLambdaInitCaptureInitialization(), clang::Sema::BuildMemberInitializer(), clang::Sema::CheckTemplateArgument(), ConvertForConditional(), clang::Sema::ConvertParamDefaultArgument(), clang::Sema::CreateBuiltinBinOp(), clang::Sema::FindCompositePointerType(), clang::Sema::tryConvertExprToType(), TryOrBuildParenListInitialization(), and TryStaticImplicitCast().
◆ RewrapReferenceInitList() ◆ SetFailed() void clang::InitializationSequence::SetFailed ( FailureKind Failure ) inlineNote that this initialization sequence failed.
Definition at line 1397 of file Initialization.h.
References FailedSequence, FK_Incomplete, and clang::QualType::isNull().
Referenced by InitializeFrom(), ResolveOverloadedFunctionForReferenceBinding(), setIncompleteTypeFailure(), TryConstructorInitialization(), TryDefaultInitialization(), TryListInitialization(), TryOrBuildParenListInitialization(), TryReferenceInitializationCore(), TryReferenceListInitialization(), and TryValueInitialization().
◆ setIncompleteTypeFailure() void clang::InitializationSequence::setIncompleteTypeFailure ( QualType IncompleteType ) inline ◆ SetOverloadFailure() ◆ setSequenceKind() void clang::InitializationSequence::setSequenceKind ( enum SequenceKind SK ) inline ◆ SetZeroInitializationFixit() void clang::InitializationSequence::SetZeroInitializationFixit ( const std::string & Fixit, SourceLocation L ) inline ◆ step_begin() step_iterator clang::InitializationSequence::step_begin ( ) const inline ◆ step_end() ◆ steps() step_range clang::InitializationSequence::steps ( ) const inlineThe documentation for this class was generated from the following files:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4