[#BloombergLP-bslma-ConstructionUtil-destructiveMove] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslma.adoc[bslma]::xref:BloombergLP/bslma/ConstructionUtil.adoc[ConstructionUtil]::destructiveMove :relfileprefix: ../../../ :mrdocs: 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. == Synopsis Declared in `<bslma_constructionutil.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< class TARGET_TYPE, class ALLOCATOR> static void destructiveMove( TARGET_TYPE* address, ALLOCATOR const& allocator, TARGET_TYPE* original); ---- [.small]#Created with https://www.mrdocs.com[MrDocs]#