class InitializationSequence
Declaration
class InitializationSequence { /* full declaration omitted */ };
Description
Describes the sequence of initializations required to initialize a given object or reference with a set of arguments.
Declared at: clang/include/clang/Sema/Initialization.h:788
Member Variables
- private enum SequenceKind SequenceKind
- The kind of initialization sequence computed.
- private SmallVector<clang::InitializationSequence::Step, 4> Steps
- Steps taken by this initialization.
- private clang::InitializationSequence::FailureKind Failure
- The reason why initialization failed.
- private clang::OverloadingResult FailedOverloadResult
- The failed result of overload resolution.
- private clang::OverloadCandidateSet FailedCandidateSet
- The candidate set created when initialization failed.
- private clang::QualType FailedIncompleteType
- The incomplete type that caused a failure.
- private std::string ZeroInitializationFixit
- The fixit that needs to be applied to make this initialization succeed.
- private clang::SourceLocation ZeroInitializationFixitLoc
Method Overview
- public void AddAddressOverloadResolutionStep(clang::FunctionDecl * Function, clang::DeclAccessPair Found, bool HadMultipleCandidates)
- public void AddArrayInitLoopStep(clang::QualType T, clang::QualType EltTy)
- public void AddArrayInitStep(clang::QualType T, bool IsGNUExtension)
- public void AddAtomicConversionStep(clang::QualType Ty)
- public void AddCAssignmentStep(clang::QualType T)
- public void AddConstructorInitializationStep(clang::DeclAccessPair FoundDecl, clang::CXXConstructorDecl * Constructor, clang::QualType T, bool HadMultipleCandidates, bool FromInitList, bool AsInitList)
- public void AddConversionSequenceStep(const clang::ImplicitConversionSequence & ICS, clang::QualType T, bool TopLevelOfInitList = false)
- public void AddDerivedToBaseCastStep(clang::QualType BaseType, clang::ExprValueKind Category)
- public void AddExtraneousCopyToTemporary(clang::QualType T)
- public void AddFinalCopy(clang::QualType T)
- public void AddFunctionReferenceConversionStep(clang::QualType Ty)
- public void AddListInitializationStep(clang::QualType T)
- public void AddOCLSamplerInitStep(clang::QualType T)
- public void AddOCLZeroOpaqueTypeStep(clang::QualType T)
- public void AddObjCObjectConversionStep(clang::QualType T)
- public void AddParenthesizedArrayInitStep(clang::QualType T)
- public void AddPassByIndirectCopyRestoreStep(clang::QualType T, bool shouldCopy)
- public void AddProduceObjCObjectStep(clang::QualType T)
- public void AddQualificationConversionStep(clang::QualType Ty, clang::ExprValueKind Category)
- public void AddReferenceBindingStep(clang::QualType T, bool BindingTemporary)
- public void AddStdInitializerListConstructionStep(clang::QualType T)
- public void AddStringInitStep(clang::QualType T)
- public void AddUserConversionStep(clang::FunctionDecl * Function, clang::DeclAccessPair FoundDecl, clang::QualType T, bool HadMultipleCandidates)
- public void AddZeroInitializationStep(clang::QualType T)
- public bool Diagnose(clang::Sema & S, const clang::InitializedEntity & Entity, const clang::InitializationKind & Kind, ArrayRef<clang::Expr *> Args)
- public bool Failed() const
- public InitializationSequence(clang::Sema & S, const clang::InitializedEntity & Entity, const clang::InitializationKind & Kind, clang::MultiExprArg Args, bool TopLevelOfInitList = false, bool TreatUnavailableAsInvalid = true)
- public void InitializeFrom(clang::Sema & S, const clang::InitializedEntity & Entity, const clang::InitializationKind & Kind, clang::MultiExprArg Args, bool TopLevelOfInitList, bool TreatUnavailableAsInvalid)
- public clang::ExprResult Perform(clang::Sema & S, const clang::InitializedEntity & Entity, const clang::InitializationKind & Kind, clang::MultiExprArg Args, clang::QualType * ResultType = nullptr)
- private void PrintInitLocationNote(clang::Sema & S, const clang::InitializedEntity & Entity)
- public void RewrapReferenceInitList(clang::QualType T, clang::InitListExpr * Syntactic)
- public void SetFailed(clang::InitializationSequence::FailureKind Failure)
- public void SetOverloadFailure(clang::InitializationSequence::FailureKind Failure, clang::OverloadingResult Result)
- public void SetZeroInitializationFixit(const std::string & Fixit, clang::SourceLocation L)
- public void dump() const
- public void dump(llvm::raw_ostream & OS) const
- public clang::OverloadCandidateSet & getFailedCandidateSet()
- public clang::OverloadingResult getFailedOverloadResult() const
- public clang::InitializationSequence::FailureKind getFailureKind() const
- public enum SequenceKind getKind() const
- public bool isAmbiguous() const
- public bool isConstructorInitialization() const
- public bool isDirectReferenceBinding() const
- public bool operator bool() const
- public void setIncompleteTypeFailure(clang::QualType IncompleteType)
- public void setSequenceKind(enum SequenceKind SK)
- public clang::InitializationSequence::step_iterator step_begin() const
- public clang::InitializationSequence::step_iterator step_end() const
- public clang::InitializationSequence::step_range steps() const
- public ~InitializationSequence()
Methods
¶void AddAddressOverloadResolutionStep(
clang::FunctionDecl* Function,
clang::DeclAccessPair Found,
bool HadMultipleCandidates)
void AddAddressOverloadResolutionStep(
clang::FunctionDecl* Function,
clang::DeclAccessPair Found,
bool HadMultipleCandidates)
Description
Add a new step in the initialization that resolves the address of an overloaded function to a specific function declaration.
Declared at: clang/include/clang/Sema/Initialization.h:1240
Parameters
- clang::FunctionDecl* Function
- the function to which the overloaded function reference resolves.
- clang::DeclAccessPair Found
- bool HadMultipleCandidates
¶void AddArrayInitLoopStep(clang::QualType T,
clang::QualType EltTy)
void AddArrayInitLoopStep(clang::QualType T,
clang::QualType EltTy)
Description
Add an array initialization loop step.
Declared at: clang/include/clang/Sema/Initialization.h:1333
Parameters
- clang::QualType T
- clang::QualType EltTy
¶void AddArrayInitStep(clang::QualType T,
bool IsGNUExtension)
void AddArrayInitStep(clang::QualType T,
bool IsGNUExtension)
Description
Add an array initialization step.
Declared at: clang/include/clang/Sema/Initialization.h:1336
Parameters
- clang::QualType T
- bool IsGNUExtension
¶void AddAtomicConversionStep(clang::QualType Ty)
void AddAtomicConversionStep(clang::QualType Ty)
Description
Add a new step that performs conversion from non-atomic to atomic type.
Declared at: clang/include/clang/Sema/Initialization.h:1295
Parameters
¶void AddCAssignmentStep(clang::QualType T)
void AddCAssignmentStep(clang::QualType T)
Declared at: clang/include/clang/Sema/Initialization.h:1323
Parameters
¶void AddConstructorInitializationStep(
clang::DeclAccessPair FoundDecl,
clang::CXXConstructorDecl* Constructor,
clang::QualType T,
bool HadMultipleCandidates,
bool FromInitList,
bool AsInitList)
void AddConstructorInitializationStep(
clang::DeclAccessPair FoundDecl,
clang::CXXConstructorDecl* Constructor,
clang::QualType T,
bool HadMultipleCandidates,
bool FromInitList,
bool AsInitList)
Description
Add a constructor-initialization step.
Declared at: clang/include/clang/Sema/Initialization.h:1309
Parameters
- clang::DeclAccessPair FoundDecl
- clang::CXXConstructorDecl* Constructor
- clang::QualType T
- bool HadMultipleCandidates
- bool FromInitList
- The constructor call is syntactically an initializer list.
- bool AsInitList
- The constructor is called as an init list constructor.
¶void AddConversionSequenceStep(
const clang::ImplicitConversionSequence& ICS,
clang::QualType T,
bool TopLevelOfInitList = false)
void AddConversionSequenceStep(
const clang::ImplicitConversionSequence& ICS,
clang::QualType T,
bool TopLevelOfInitList = false)
Description
Add a new step that applies an implicit conversion sequence.
Declared at: clang/include/clang/Sema/Initialization.h:1298
Parameters
- const clang::ImplicitConversionSequence& ICS
- clang::QualType T
- bool TopLevelOfInitList = false
¶void AddDerivedToBaseCastStep(
clang::QualType BaseType,
clang::ExprValueKind Category)
void AddDerivedToBaseCastStep(
clang::QualType BaseType,
clang::ExprValueKind Category)
Description
Add a new step in the initialization that performs a derived-to- base cast.
Declared at: clang/include/clang/Sema/Initialization.h:1251
Parameters
- clang::QualType BaseType
- the base type to which we will be casting.
- clang::ExprValueKind Category
- Indicates whether the result will be treated as an rvalue, an xvalue, or an lvalue.
¶void AddExtraneousCopyToTemporary(
clang::QualType T)
void AddExtraneousCopyToTemporary(
clang::QualType T)
Declared at: clang/include/clang/Sema/Initialization.h:1271
Parameters
- clang::QualType T
- The type of the temporary being created.
¶void AddFinalCopy(clang::QualType T)
void AddFinalCopy(clang::QualType T)
Description
Add a new step that makes a copy of the input to an object of the given type, as the final step in class copy-initialization.
Declared at: clang/include/clang/Sema/Initialization.h:1275
Parameters
¶void AddFunctionReferenceConversionStep(
clang::QualType Ty)
void AddFunctionReferenceConversionStep(
clang::QualType Ty)
Description
Add a new step that performs a function reference conversion to the given type.
Declared at: clang/include/clang/Sema/Initialization.h:1291
Parameters
¶void AddListInitializationStep(clang::QualType T)
void AddListInitializationStep(clang::QualType T)
Description
Add a list-initialization step.
Declared at: clang/include/clang/Sema/Initialization.h:1302
Parameters
¶void AddOCLSamplerInitStep(clang::QualType T)
void AddOCLSamplerInitStep(clang::QualType T)
Description
Add a step to initialize an OpenCL sampler from an integer constant.
Declared at: clang/include/clang/Sema/Initialization.h:1354
Parameters
¶void AddOCLZeroOpaqueTypeStep(clang::QualType T)
void AddOCLZeroOpaqueTypeStep(clang::QualType T)
Description
Add a step to initialzie an OpenCL opaque type (event_t, queue_t, etc.) from a zero constant.
Declared at: clang/include/clang/Sema/Initialization.h:1358
Parameters
¶void AddObjCObjectConversionStep(
clang::QualType T)
void AddObjCObjectConversionStep(
clang::QualType T)
Description
Add an Objective-C object conversion step, which is always a no-op.
Declared at: clang/include/clang/Sema/Initialization.h:1330
Parameters
¶void AddParenthesizedArrayInitStep(
clang::QualType T)
void AddParenthesizedArrayInitStep(
clang::QualType T)
Description
Add a parenthesized array initialization step.
Declared at: clang/include/clang/Sema/Initialization.h:1339
Parameters
¶void AddPassByIndirectCopyRestoreStep(
clang::QualType T,
bool shouldCopy)
void AddPassByIndirectCopyRestoreStep(
clang::QualType T,
bool shouldCopy)
Description
Add a step to pass an object by indirect copy-restore.
Declared at: clang/include/clang/Sema/Initialization.h:1342
Parameters
- clang::QualType T
- bool shouldCopy
¶void AddProduceObjCObjectStep(clang::QualType T)
void AddProduceObjCObjectStep(clang::QualType T)
Description
Add a step to "produce" an Objective-C object (by retaining it).
Declared at: clang/include/clang/Sema/Initialization.h:1346
Parameters
¶void AddQualificationConversionStep(
clang::QualType Ty,
clang::ExprValueKind Category)
void AddQualificationConversionStep(
clang::QualType Ty,
clang::ExprValueKind Category)
Description
Add a new step that performs a qualification conversion to the given type.
Declared at: clang/include/clang/Sema/Initialization.h:1286
Parameters
- clang::QualType Ty
- clang::ExprValueKind Category
¶void AddReferenceBindingStep(
clang::QualType T,
bool BindingTemporary)
void AddReferenceBindingStep(
clang::QualType T,
bool BindingTemporary)
Description
Add a new step binding a reference to an object.
Declared at: clang/include/clang/Sema/Initialization.h:1259
Parameters
- clang::QualType T
- bool BindingTemporary
- True if we are binding a reference to a temporary object (thereby extending its lifetime); false if we are binding to an lvalue or an lvalue treated as an rvalue.
¶void AddStdInitializerListConstructionStep(
clang::QualType T)
void AddStdInitializerListConstructionStep(
clang::QualType T)
Description
Add a step to construct a std::initializer_list object from an initializer list.
Declared at: clang/include/clang/Sema/Initialization.h:1350
Parameters
¶void AddStringInitStep(clang::QualType T)
void AddStringInitStep(clang::QualType T)
Description
Add a string init step.
Declared at: clang/include/clang/Sema/Initialization.h:1326
Parameters
¶void AddUserConversionStep(
clang::FunctionDecl* Function,
clang::DeclAccessPair FoundDecl,
clang::QualType T,
bool HadMultipleCandidates)
void AddUserConversionStep(
clang::FunctionDecl* Function,
clang::DeclAccessPair FoundDecl,
clang::QualType T,
bool HadMultipleCandidates)
Description
Add a new step invoking a conversion function, which is either a constructor or a conversion function.
Declared at: clang/include/clang/Sema/Initialization.h:1279
Parameters
- clang::FunctionDecl* Function
- clang::DeclAccessPair FoundDecl
- clang::QualType T
- bool HadMultipleCandidates
¶void AddZeroInitializationStep(clang::QualType T)
void AddZeroInitializationStep(clang::QualType T)
Description
Add a zero-initialization step.
Declared at: clang/include/clang/Sema/Initialization.h:1316
Parameters
¶bool Diagnose(
clang::Sema& S,
const clang::InitializedEntity& Entity,
const clang::InitializationKind& Kind,
ArrayRef<clang::Expr*> Args)
bool Diagnose(
clang::Sema& S,
const clang::InitializedEntity& Entity,
const clang::InitializationKind& Kind,
ArrayRef<clang::Expr*> Args)
Description
Diagnose an potentially-invalid initialization sequence.
Declared at: clang/include/clang/Sema/Initialization.h:1198
Parameters
- clang::Sema& S
- const clang::InitializedEntity& Entity
- const clang::InitializationKind& Kind
- ArrayRef<clang::Expr*> Args
Returns
true if the initialization sequence was ill-formed, false otherwise.
¶bool Failed() const
bool Failed() const
Description
Determine whether the initialization sequence is invalid.
Declared at: clang/include/clang/Sema/Initialization.h:1213
¶InitializationSequence(
clang::Sema& S,
const clang::InitializedEntity& Entity,
const clang::InitializationKind& Kind,
clang::MultiExprArg Args,
bool TopLevelOfInitList = false,
bool TreatUnavailableAsInvalid = true)
InitializationSequence(
clang::Sema& S,
const clang::InitializedEntity& Entity,
const clang::InitializationKind& Kind,
clang::MultiExprArg Args,
bool TopLevelOfInitList = false,
bool TreatUnavailableAsInvalid = true)
Description
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
Declared at: clang/include/clang/Sema/Initialization.h:1155
Parameters
- clang::Sema& S
- the semantic analysis object.
- const clang::InitializedEntity& Entity
- the entity being initialized.
- const clang::InitializationKind& Kind
- the kind of initialization being performed.
- clang::MultiExprArg Args
- the argument(s) provided for initialization.
- bool TopLevelOfInitList = false
- true if we are initializing from an expression at the top level inside an initializer list. This disallows narrowing conversions in C++11 onwards.
- bool TreatUnavailableAsInvalid = true
- true if we want to treat unavailable as invalid.
¶void InitializeFrom(
clang::Sema& S,
const clang::InitializedEntity& Entity,
const clang::InitializationKind& Kind,
clang::MultiExprArg Args,
bool TopLevelOfInitList,
bool TreatUnavailableAsInvalid)
void InitializeFrom(
clang::Sema& S,
const clang::InitializedEntity& Entity,
const clang::InitializationKind& Kind,
clang::MultiExprArg Args,
bool TopLevelOfInitList,
bool TreatUnavailableAsInvalid)
Declared at: clang/include/clang/Sema/Initialization.h:1161
Parameters
- clang::Sema& S
- const clang::InitializedEntity& Entity
- const clang::InitializationKind& Kind
- clang::MultiExprArg Args
- bool TopLevelOfInitList
- bool TreatUnavailableAsInvalid
¶clang::ExprResult Perform(
clang::Sema& S,
const clang::InitializedEntity& Entity,
const clang::InitializationKind& Kind,
clang::MultiExprArg Args,
clang::QualType* ResultType = nullptr)
clang::ExprResult Perform(
clang::Sema& S,
const clang::InitializedEntity& Entity,
const clang::InitializationKind& Kind,
clang::MultiExprArg Args,
clang::QualType* ResultType = nullptr)
Description
Perform the actual initialization of the given entity based on the computed initialization sequence.
Declared at: clang/include/clang/Sema/Initialization.h:1188
Parameters
- clang::Sema& S
- the semantic analysis object.
- const clang::InitializedEntity& Entity
- the entity being initialized.
- const clang::InitializationKind& Kind
- the kind of initialization being performed.
- clang::MultiExprArg Args
- the argument(s) provided for initialization, ownership of which is transferred into the routine.
- clang::QualType* ResultType = nullptr
- if non-NULL, will be set to the type of the initialized object, which is the type of the declaration in most cases. However, when the initialized object is a variable of incomplete array type and the initializer is an initializer list, this type will be set to the completed array type.
Returns
an expression that performs the actual object initialization, if the initialization is well-formed. Otherwise, emits diagnostics and returns an invalid expression.
¶void PrintInitLocationNote(
clang::Sema& S,
const clang::InitializedEntity& Entity)
void PrintInitLocationNote(
clang::Sema& S,
const clang::InitializedEntity& Entity)
Description
Prints a follow-up note that highlights the location of the initialized entity, if it's remote.
Declared at: clang/include/clang/Sema/Initialization.h:1133
Parameters
- clang::Sema& S
- const clang::InitializedEntity& Entity
¶void RewrapReferenceInitList(
clang::QualType T,
clang::InitListExpr* Syntactic)
void RewrapReferenceInitList(
clang::QualType T,
clang::InitListExpr* Syntactic)
Description
Add steps to unwrap a initializer list for a reference around a single element and rewrap it at the end.
Declared at: clang/include/clang/Sema/Initialization.h:1362
Parameters
- clang::QualType T
- clang::InitListExpr* Syntactic
¶void SetFailed(
clang::InitializationSequence::FailureKind
Failure)
void SetFailed(
clang::InitializationSequence::FailureKind
Failure)
Description
Note that this initialization sequence failed.
Declared at: clang/include/clang/Sema/Initialization.h:1365
Parameters
- clang::InitializationSequence::FailureKind Failure
¶void SetOverloadFailure(
clang::InitializationSequence::FailureKind
Failure,
clang::OverloadingResult Result)
void SetOverloadFailure(
clang::InitializationSequence::FailureKind
Failure,
clang::OverloadingResult Result)
Description
Note that this initialization sequence failed due to failed overload resolution.
Declared at: clang/include/clang/Sema/Initialization.h:1374
Parameters
- clang::InitializationSequence::FailureKind Failure
- clang::OverloadingResult Result
¶void SetZeroInitializationFixit(
const std::string& Fixit,
clang::SourceLocation L)
void SetZeroInitializationFixit(
const std::string& Fixit,
clang::SourceLocation L)
Description
Call for initializations are invalid but that would be valid zero initialzations if Fixit was applied.
Declared at: clang/include/clang/Sema/Initialization.h:1125
Parameters
- const std::string& Fixit
- clang::SourceLocation L
¶void dump() const
void dump() const
Description
Dump a representation of this initialization sequence to standard error, for debugging purposes.
Declared at: clang/include/clang/Sema/Initialization.h:1407
¶void dump(llvm::raw_ostream& OS) const
void dump(llvm::raw_ostream& OS) const
Description
Dump a representation of this initialization sequence to the given stream, for debugging purposes.
Declared at: clang/include/clang/Sema/Initialization.h:1403
Parameters
¶clang::OverloadCandidateSet&
getFailedCandidateSet()
clang::OverloadCandidateSet&
getFailedCandidateSet()
Description
Retrieve a reference to the candidate set when overload resolution fails.
Declared at: clang/include/clang/Sema/Initialization.h:1378
¶clang::OverloadingResult getFailedOverloadResult()
const
clang::OverloadingResult getFailedOverloadResult()
const
Description
Get the overloading result, for when the initialization sequence failed due to a bad overload.
Declared at: clang/include/clang/Sema/Initialization.h:1384
¶clang::InitializationSequence::FailureKind
getFailureKind() const
clang::InitializationSequence::FailureKind
getFailureKind() const
Description
Determine why initialization failed.
Declared at: clang/include/clang/Sema/Initialization.h:1396
¶enum SequenceKind getKind() const
enum SequenceKind getKind() const
Description
Determine the kind of initialization sequence computed.
Declared at: clang/include/clang/Sema/Initialization.h:1204
¶bool isAmbiguous() const
bool isAmbiguous() const
Description
Determine whether this initialization failed due to an ambiguity.
Declared at: clang/include/clang/Sema/Initialization.h:1229
¶bool isConstructorInitialization() const
bool isConstructorInitialization() const
Description
Determine whether this initialization is direct call to a constructor.
Declared at: clang/include/clang/Sema/Initialization.h:1233
¶bool isDirectReferenceBinding() const
bool isDirectReferenceBinding() const
Description
Determine whether this initialization is a direct reference binding (C++ [dcl.init.ref]).
Declared at: clang/include/clang/Sema/Initialization.h:1226
¶bool operator bool() const
bool operator bool() const
Description
Determine whether the initialization sequence is valid.
Declared at: clang/include/clang/Sema/Initialization.h:1210
¶void setIncompleteTypeFailure(
clang::QualType IncompleteType)
void setIncompleteTypeFailure(
clang::QualType IncompleteType)
Description
Note that this initialization sequence failed due to an incomplete type.
Declared at: clang/include/clang/Sema/Initialization.h:1390
Parameters
- clang::QualType IncompleteType
¶void setSequenceKind(enum SequenceKind SK)
void setSequenceKind(enum SequenceKind SK)
Description
Set the kind of sequence computed.
Declared at: clang/include/clang/Sema/Initialization.h:1207
Parameters
- enum SequenceKind SK
¶clang::InitializationSequence::step_iterator
step_begin() const
clang::InitializationSequence::step_iterator
step_begin() const
Declared at: clang/include/clang/Sema/Initialization.h:1217
¶clang::InitializationSequence::step_iterator
step_end() const
clang::InitializationSequence::step_iterator
step_end() const
Declared at: clang/include/clang/Sema/Initialization.h:1218
¶clang::InitializationSequence::step_range steps()
const
clang::InitializationSequence::step_range steps()
const
Declared at: clang/include/clang/Sema/Initialization.h:1222
¶~InitializationSequence()
~InitializationSequence()
Declared at: clang/include/clang/Sema/Initialization.h:1165