BloombergLP::bslalg::ArrayPrimitives::destructiveMoveAndInsert

Destructively move elements while inserting copies of a value.

Synopsis

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);

Description

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.

Parameters

NameDescription
toBeginbeginning of the uninitialized destination range
fromEndPtrloads the end of the remaining valid source range
fromBeginbeginning of the source range
positioninsertion position within the source range
fromEndend of the source range (one past the last element)
valuevalue copied into each inserted element
numElementsnumber of copies of value to insert
allocatorallocator used to supply memory if required