[#BloombergLP-bslma-ConstructionUtil] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslma.adoc[bslma]::ConstructionUtil :relfileprefix: ../../ :mrdocs: This `struct` provides a namespace for utility functions that construct elements of (a template parameter) `TARGET_TYPE`. == Synopsis Declared in `<bslma_constructionutil.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- struct ConstructionUtil; ---- == Static Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslma/ConstructionUtil/construct-00.adoc[`construct`] | `construct` overloads | xref:BloombergLP/bslma/ConstructionUtil/destructiveMove.adoc[`destructiveMove`] | Create an object of (template parameter) `TARGET_TYPE` at the specified `address` by moving from the specified `original` object, then destroy `original`. The specified `allocator` is unused (except possibly in precondition checks). The constructed object will have the same allocator (if any) as `original`. If `bslmf::IsBitwiseMoveable<TARGET_TYPE>::value` is `true`, then the entire operation is a simple `memcpy` ‐‐ no constructors or destructors are invoked; otherwise, this method move‐constructs an object at `address` from the object at `original` then invokes the destructor on `original`. If the move constructor throws an exception, the memory at `address` is left in an uninitialized state and `original` is left in a valid but unspecified state. The behavior is undefined if `original` uses an allocator other than `allocator` to supply memory. Note that if `original` points to an object of a type derived from `TARGET_TYPE` (i.e., a slicing move) where `TARGET_TYPE` has a non‐`virtual` destructor, then `original` will be only partially destroyed. | xref:BloombergLP/bslma/ConstructionUtil/make-02.adoc[`make`] | `make` overloads |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#