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