[#BloombergLP-bslalg-AutoArrayMoveDestructor]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslalg.adoc[bslalg]::AutoArrayMoveDestructor
:relfileprefix: ../../
:mrdocs:

This `class` provides a specialized proctor that bit&hyphen;wise moves and destroys array segments upon destruction&period;

== Synopsis

Declared in `&lt;bslalg&lowbar;autoarraymovedestructor&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    class OBJECT&lowbar;TYPE,
    class ALLOCATOR = xref:bsl/allocator-0df.adoc[bsl::allocator&lt;OBJECT&lowbar;TYPE&gt;]&gt;
class AutoArrayMoveDestructor;
----

== Description

Upon destruction and unless the `release` method has been called, this proctor bit&hyphen;wise moves the elements in a segment of an array of parameterized `OBJECT&lowbar;TYPE` back to some destination, and destroys some other elements in an adjacent segment of the same array&period; The elements destroyed are delimited by the range `&lsqb; begin(), middle() )&rsqb;` and those moved to `destination()` and in the range `&lsqb; middle(), end() )&rsqb;`&period; Note that, once constructed, `begin()` and `end()` remain fixed&period; As the guard advances, `middle()` and `destination()` move, reflecting the successful transfer of data between the moving range and the destination&period;

== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslalg/AutoArrayMoveDestructor/2constructor.adoc[`AutoArrayMoveDestructor`]         [.small]#[constructor]#
| Create a proctor for moving and destroying the specified array ranges&period;
| xref:BloombergLP/bslalg/AutoArrayMoveDestructor/2destructor.adoc[`&#126;AutoArrayMoveDestructor`] [.small]#[destructor]#
| Bit&hyphen;wise move the range `&lsqb; middle(), end() )&rsqb;` to the `destination()` address and destroy `&lsqb; begin(), middle() )&rsqb;`&period;
| xref:BloombergLP/bslalg/AutoArrayMoveDestructor/advance.adoc[`advance`] 
| Increment both middle and destination pointers by one position&period;
| xref:BloombergLP/bslalg/AutoArrayMoveDestructor/begin.adoc[`begin`] 
| Return the address at the beginning of the guarded range&period;
| xref:BloombergLP/bslalg/AutoArrayMoveDestructor/destination.adoc[`destination`] 
| Return the destination address for elements moved on destruction&period;
| xref:BloombergLP/bslalg/AutoArrayMoveDestructor/end.adoc[`end`] 
| Return the address at the end of the guarded range&period;
| xref:BloombergLP/bslalg/AutoArrayMoveDestructor/middle.adoc[`middle`] 
| Return the address at the middle of the guarded range&period;
|===



[.small]#Created with https://www.mrdocs.com[MrDocs]#
