inline O copy(I first, I last, O dst) { typedef bcd::bool_ < are_corresponding<I, O>::value && bcd::is_trivially_copy_assignable<typename ::boost::container::iterator_traits<O>::value_type>::value > use_memmove; return copy_dispatch(first, last, dst, use_memmove()); // may throw }
inline O copy(I first, I last, O dst) { typedef typename ::boost::mpl::and_< are_corresponding<I, O>, ::boost::has_trivial_assign< typename ::boost::iterator_value<O>::type > >::type use_memmove; return copy_dispatch(first, last, dst, use_memmove()); // may throw }