BloombergLP::bslalg::ArrayPrimitives::emplace

emplace overloads

Synopses

Declared in <bslalg_arrayprimitives.h>

Insert a newly created allocator_traits<ALLOCATOR>::value_type object, constructed by forwarding the specified allocator (if required) and the specified (variable number of) arguments to the corresponding constructor of allocator_traits<ALLOCATOR>::value_type, into the array at the specified toBegin location, shifting forward the elements from toBegin to the specified toEnd location by one position. If an exception is thrown during the in-place construction of the new object, the elements in the range [toBegin .. toEnd)] are unaffected; otherwise, if a (copy or move) constructor or a (copy or move) assignment operator throws an exception, then any elements created after toEnd are destroyed and the elements in the range [toBegin .. toEnd )] are left in a valid but unspecified state. The behavior is undefined unless toBegin refers to sufficient space to hold at least toEnd - toBegin + 1 elements.

template<
    class ALLOCATOR,
    class... ARGS>
static
void
emplace(
    bsl::allocator_traits<ALLOCATOR>::pointer toBegin,
    bsl::allocator_traits<ALLOCATOR>::pointer toEnd,
    ALLOCATOR allocator,
    ARGS&&... arguments);
» more...

Insert a newly created object of the (template parameter) type TARGET_TYPE, constructed by forwarding the specified allocator (if required) and the specified (variable number of) arguments to the corresponding constructor of TARGET_TYPE, into the array at the specified toBegin address, shifting the elements from toBegin to the specified toEnd address up one position towards larger addresses. If an exception is thrown during the in-place construction of the new object, the elements in the range [toBegin .. toEnd)] are unaffected; otherwise, if a (copy or move) constructor or a (copy or move) assignment operator throws an exception, then any elements created after toEnd are destroyed and the elements in the range [toBegin .. toEnd )] are left in a valid but unspecified state. The behavior is undefined unless toBegin refers to sufficient space to hold at least toEnd - toBegin + 1 elements.

template<
    class TARGET_TYPE,
    class... ARGS>
static
void
emplace(
    TARGET_TYPE* toBegin,
    TARGET_TYPE* toEnd,
    bslma::Allocator* allocator,
    ARGS&&... args);
» more...