
template<typename I , typename S , typename R , typename P = ident, requires = (InputIterator<I>() && Sentinel<S, I>() && IndirectPredicate<R, projected<I, P> >())> 
difference_type_t< I >  operator() (I begin, S end, R pred, P proj=P{}) const 

template<typename Rng , typename R , typename P = ident, typename I = iterator_t<Rng>, requires = (InputRange<Rng>() && IndirectPredicate<R, projected<I, P> >())> 
difference_type_t< I >  operator() (Rng &&rng, R pred, P proj=P{}) const 
