12 template<concepts::InputIterator It1, concepts::SentinelFor<It1> Sent1, concepts::InputIterator It2,
13 concepts::SentinelFor<It2> Sent2, concepts::WeaklyIncrementable Out,
typename Comp = function::Compare,
14 typename Proj1 = function::Identity,
typename Proj2 = function::Identity>
16 constexpr auto operator()(It1 first1, Sent1 last1, It2 first2, Sent2 last2, Out out, Comp comp = {},
17 Proj1 proj1 = {}, Proj2 proj2 = {})
const -> InInOutResult<It1, It2, Out> {
19 for (; first1 != last1 && first2 != last2; ++out) {
25 }
else if (result > 0) {
36 auto [end1, out_next] =
container::copy(util::move(first1), last1, util::move(out));
37 auto [end2, out_final] =
container::copy(util::move(first2), last2, util::move(out_next));
38 return { util::move(end1), util::move(end2), util::move(out_final) };
41 template<concepts::InputContainer Con1, concepts::InputContainer Con2, concepts::WeaklyIncrementable Out,
42 typename Comp = function::Compare,
typename Proj1 = function::Identity,
43 typename Proj2 = function::Identity>
46 constexpr auto operator()(Con1&& container1, Con2&& container2, Out out, Comp comp = {}, Proj1 proj1 = {},
47 Proj2 proj2 = {})
const