boost::uninitialized_move — defined(BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE)
// In header: <boost/move/algorithm.hpp> template<typename I, typename F> F uninitialized_move(I f, I l, F r);
Effects:
for (; first != last; ++result, ++first) new (static_cast<void*>(&*result)) typename iterator_traits<ForwardIterator>::value_type(boost::move(*first));
Returns: result