
template<typename I , typename S , typename C = ordered_less, typename P = ident, requires = (BidirectionalIterator<I>() && Sortable<I, C, P>())> 
I  operator() (I begin, I middle, S end, C pred=C{}, P proj=P{}) const 

template<typename Rng , typename C = ordered_less, typename P = ident, typename I = iterator_t<Rng>, requires = (BidirectionalRange<Rng>() && Sortable<I, C, P>())> 
safe_iterator_t< Rng >  operator() (Rng &&rng, I middle, C pred=C{}, P proj=P{}) const 
