[#BloombergLP-bslalg-AutoArrayMoveDestructor] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslalg.adoc[bslalg]::AutoArrayMoveDestructor :relfileprefix: ../../ :mrdocs: This `class` provides a specialized proctor object that, upon destruction and unless the `release` method has been called, bit‐wise moves the elements in a segment of an array of parameterized `OBJECT_TYPE` back to some destination, and destroys some other elements in an adjacent segment of the same array. The elements destroyed are delimited by the range `[ begin(), middle() )]` and those moved to `destination()` and in the range `[ middle(), end() )]`. Note that, once constructed, `begin()` and `end()` remain fixed. As the guard advances, `middle()` and `destination()` move, reflecting the successful transfer of data between the moving range and the destination. == Synopsis Declared in `<bslalg_autoarraymovedestructor.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< class OBJECT_TYPE, class ALLOCATOR = xref:bsl/allocator-0df.adoc[bsl::allocator<OBJECT_TYPE>]> class AutoArrayMoveDestructor; ---- == Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslalg/AutoArrayMoveDestructor/2constructor.adoc[`AutoArrayMoveDestructor`] [.small]#[constructor]# | TBD: document the `allocator` parameter. Create a proctor for the sequence of elements of the parameterized `OBJECT_TYPE` in the specified range `[ begin, end )]` which, upon destruction, moves the range `[ begin, middle )]` to the specified `destination` and destroys the `[ middle, end )]` range. The behavior is undefined unless `begin`, `middle`, and `end` refer to a contiguous sequence of initialized `OBJECT_TYPE` objects, where `begin <= middle <= end`, and `destination` refers to a contiguous sequence of (uninitialized) memory of sufficient size to hold `end ‐ begin` `OBJECT_TYPE` objects (which must not overlap `[begin, end)]`). | xref:BloombergLP/bslalg/AutoArrayMoveDestructor/2destructor.adoc[`~AutoArrayMoveDestructor`] [.small]#[destructor]# | Bit‐wise move the range `[ middle(), end() )]` to the `destination()` address and destroy `[ begin(), middle() )]`. | xref:BloombergLP/bslalg/AutoArrayMoveDestructor/advance.adoc[`advance`] | Increment both middle and destination pointers by one position. The behavior is undefined if this operation result in `destination()` entering the `[ begin(), end() )]` range. | xref:BloombergLP/bslalg/AutoArrayMoveDestructor/begin.adoc[`begin`] | Return the address at the beginning of the guarded range. | xref:BloombergLP/bslalg/AutoArrayMoveDestructor/destination.adoc[`destination`] | Return the destination address, to which the second portion of the guarded range, delimited by `[ middle(), end() )]`, will be moved upon destruction, or 0 if this guard has been released. | xref:BloombergLP/bslalg/AutoArrayMoveDestructor/end.adoc[`end`] | Return the address at the end of the guarded range. | xref:BloombergLP/bslalg/AutoArrayMoveDestructor/middle.adoc[`middle`] | Return the address at the middle of the guarded range. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#