|  | 
| template<typename Pred , typename Proj  = identity> requires (!range<Pred>)
 | 
| constexpr auto | operator() (Pred pred, Proj proj={}) const | 
|  | 
| template<typename Rng , typename Pred , typename Proj  = identity> requires forward_range<Rng> && erasable_range<Rng, iterator_t<Rng>, sentinel_t<Rng>> && indirect_relation<Pred, projected<iterator_t<Rng>, Proj>> && permutable<iterator_t<Rng>>
 | 
| Rng | operator() (Rng &&rng, Pred pred, Proj proj={}) const | 
|  |