BloombergLP::bslalg::ArrayPrimitives::destructiveMoveAndInsert

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 non-modifiable elements from the range starting at the specified first iterator of the parameterized FWD_ITER type and ending immediately before the specified last sentinel or iterator. Keep the pointer at the specified fromEndPtr to point 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, the destination array contains at least (fromEnd - fromBegin) + numElements uninitialized elements after toBegin, and numElements is the distance from first to last. 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.

Synopsis

Declared in <bslalg_arrayprimitives.h>

template<
    class TARGET_TYPE,
    class FWD_ITER,
    class SENTINEL>
static
void
destructiveMoveAndInsert(
    TARGET_TYPE* toBegin,
    TARGET_TYPE** fromEndPtr,
    TARGET_TYPE* fromBegin,
    TARGET_TYPE* position,
    TARGET_TYPE* fromEnd,
    FWD_ITER first,
    SENTINEL last,
    size_type numElements,
    bslma::Allocator* allocator);