Destructively move elements while inserting copies of a value.
Declared in <bslalg_arrayprimitives.h>
template<class TARGET_TYPE>
static
void
destructiveMoveAndInsert(
TARGET_TYPE* toBegin,
TARGET_TYPE** fromEndPtr,
TARGET_TYPE* fromBegin,
TARGET_TYPE* position,
TARGET_TYPE* fromEnd,
TARGET_TYPE const& value,
size_type numElements,
bslma::Allocator* allocator);
Move the elements of the parameterized TARGET_TYPE in the array starting at the specified fromBegin address and ending immediately before the specified fromEnd address into an uninitialized array of TARGET_TYPE at the specified toBegin address, inserting at the specified position (after translating from fromBegin to toBegin) the specified numElements copies of the specified value. Keep the pointer at the specified fromEndPtr address pointing to the first uninitialized element in '[ fromBegin,] fromEnd)' as the elements are moved from source to destination. The behavior is undefined unless fromBegin <= position <= fromEnd and the destination array contains at least (fromEnd - fromBegin) + numElements uninitialized elements. If a copy constructor or assignment operator for TARGET_TYPE throws an exception, then any elements created in the output array are destroyed and the elements in the range [ fromBegin, *fromEndPtr )] will have unspecified but valid values.
| Name | Description |
|---|---|
| toBegin | beginning of the uninitialized destination range |
| fromEndPtr | loads the end of the remaining valid source range |
| fromBegin | beginning of the source range |
| position | insertion position within the source range |
| fromEnd | end of the source range (one past the last element) |
| value | value copied into each inserted element |
| numElements | number of copies of value to insert |
| allocator | allocator used to supply memory if required |