template void merge(Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator2 last2, Iterator3 result) { while (first1 != last1 && first2 != last2) { if (*first2 < *first1) { *result = *first2; ++first2; } else { *result = *first1; ++first1; } ++result; } while (first1 != last1) { *result = *first1; ++result; ++first1; } while (first2 != last2) { *result = *first2; ++result; ++first2; } }