58 template(
typename I0,
typename I1,
typename O,
typename C =
less,
60 requires mergeable<I0, I1, O, C, P0, P1>)
61 merge_n_result<I0, I1, O> operator()(I0 begin0,
62 iter_difference_t<I0> n0,
64 iter_difference_t<I1> n1,
70 using T = merge_n_result<I0, I1, O>;
73 auto b0 = uncounted(begin0);
74 auto b1 = uncounted(begin1);
79 auto res = copy_n(b1, n1, out);
80 begin0 = recounted(begin0, b0, n0orig);
81 begin1 = recounted(begin1, res.in, n1orig);
82 return T{begin0, begin1, res.out};
86 auto res = copy_n(b0, n0, out);
87 begin0 = recounted(begin0, res.in, n0orig);
88 begin1 = recounted(begin1, b1, n1orig);
89 return T{begin0, begin1, res.out};
91 if(invoke(r, invoke(p1, *b1), invoke(p0, *b0)))