inline F uninitialized_copy(I first, I last, F dst) { typedef bcd::bool_ < are_corresponding<I, F>::value && bcd::is_trivially_copy_constructible<typename ::boost::container::iterator_traits<F>::value_type>::value > use_memcpy; return uninitialized_copy_dispatch(first, last, dst, use_memcpy()); // may throw }
inline F uninitialized_copy(I first, I last, F dst) { typedef typename ::boost::mpl::and_< are_corresponding<I, F>, ::boost::has_trivial_copy< typename ::boost::iterator_value<F>::type > >::type use_memcpy; return uninitialized_copy_dispatch(first, last, dst, use_memcpy()); // may throw }