template<class OBJECT_TYPE, class ALLOCATOR = bsl::allocator<OBJECT_TYPE>>
class bslalg::AutoArrayMoveDestructor< OBJECT_TYPE, ALLOCATOR >
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.
See bslalg_autoarraymovedestructor
template<class OBJECT_TYPE , class ALLOCATOR >
bslalg::AutoArrayMoveDestructor< OBJECT_TYPE, ALLOCATOR >::AutoArrayMoveDestructor |
( |
OBJECT_TYPE * |
destination, |
|
|
OBJECT_TYPE * |
begin, |
|
|
OBJECT_TYPE * |
middle, |
|
|
OBJECT_TYPE * |
end, |
|
|
ALLOCATOR |
allocator = ALLOCATOR() |
|
) |
| |
|
inline |
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)
).