Sierra Toolkit Version of the Day
eastl::uninitialized_move_impl< hasTrivialMove, iteratorTag > Struct Template Reference

#include <memory_eastl.h>

List of all members.

Static Public Member Functions

template<typename ForwardIterator , typename ForwardIteratorDest >
static ForwardIteratorDest do_move_start (ForwardIterator first, ForwardIterator last, ForwardIteratorDest dest)
template<typename ForwardIterator , typename ForwardIteratorDest >
static ForwardIteratorDest do_move_commit (ForwardIterator first, ForwardIterator last, ForwardIteratorDest dest)
template<typename ForwardIterator , typename ForwardIteratorDest >
static ForwardIteratorDest do_move_abort (ForwardIterator first, ForwardIterator last, ForwardIteratorDest dest)

Detailed Description

template<bool hasTrivialMove, typename iteratorTag>
struct eastl::uninitialized_move_impl< hasTrivialMove, iteratorTag >

uninitialized_move

uninitialized_move takes a constructed sequence of objects and an uninitialized destination buffer. In the case of any exception thrown while moving the objects, any newly constructed objects are guaranteed to be destructed and the input left fully constructed.

In the case where you need to do multiple moves atomically, split the calls into uninitialized_move_start/abort/commit.

uninitialized_move_start can possibly throw an exception. If it does, you don't need to do anything. However, if it returns without throwing an exception you need to guarantee that either uninitialize_move_abort or uninitialized_move_commit is called.

Both uninitialize_move_abort and uninitialize_move_commit are guaranteed to not throw C++ exceptions.

Definition at line 170 of file memory_eastl.h.


The documentation for this struct was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines