12 template<concepts::ForwardIterator It, concepts::SentinelFor<It> Sent, concepts::ForwardIterator Jt,
13 concepts::SentinelFor<Jt> Jent,
typename Pred = function::Equal,
typename Proj = function::Identity,
14 typename Jroj = function::Identity>
16 constexpr auto operator()(It it, Sent ed, Jt jt, Jent fd, Pred pred = {}, Proj
proj = {}, Jroj jroj = {})
const
20 return { last, last };
22 if constexpr (concepts::BidirectionalIterator<It> && concepts::SameAs<It, Sent> &&
23 concepts::BidirectionalIterator<Jt> && concepts::SameAs<Jt, Jent>) {
31 return { b.base(), a.base() };
35 for (; it != ed; ++it) {
38 if (result.in2 == fd) {
40 r2 = util::move(result.in1);
43 if (r1 == It {} && r2 == It {}) {
46 return { util::move(r1), util::move(r2) };
50 template<concepts::InputContainer Con, concepts::InputContainer Jon,
typename Pred = function::Equal,
51 typename Proj = function::Identity,
typename Jroj = function::Identity>
54 constexpr auto operator()(Con&& con, Jon&& jon, Pred pred = {}, Proj
proj = {}, Jroj jroj = {})
const