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