35#ifndef _BLAZE_UTIL_ALGORITHMS_TRANSFER_H_
36#define _BLAZE_UTIL_ALGORITHMS_TRANSFER_H_
69template<
typename InputIterator
70 ,
typename OutputIterator >
71OutputIterator
transfer( InputIterator first, InputIterator last, OutputIterator dest )
73 using T =
typename std::iterator_traits<InputIterator>::value_type;
75 if( IsNothrowMoveAssignable_v<T> ) {
76 return std::move( first, last, dest );
79 return std::copy( first, last, dest );
98template<
typename InputIterator
99 ,
typename OutputIterator >
100OutputIterator
transfer_n( InputIterator first,
size_t n, OutputIterator dest )
102 using T =
typename std::iterator_traits<InputIterator>::value_type;
104 if( IsNothrowMoveAssignable_v<T> ) {
105 return std::copy_n( std::make_move_iterator( first ), n, dest );
108 return std::copy_n( first, n, dest );
Header file for the IsAssignable type trait.
OutputIterator transfer_n(InputIterator first, size_t n, OutputIterator dest)
Transfers the elements from the given source range to the destination range.
Definition: Transfer.h:100
OutputIterator transfer(InputIterator first, InputIterator last, OutputIterator dest)
Transfers the elements from the given source range to the destination range.
Definition: Transfer.h:71