|  | 
| template<typename F , typename P  = identity> requires (!range<F>)
 | 
| constexpr auto | operator() (F fun, P proj=P{}) const | 
|  | 
| template<typename Rng , typename F , typename P  = identity> requires input_range<Rng> && copy_constructible<F> && indirectly_writable< iterator_t<Rng>, indirect_result_t<F &, projected<iterator_t<Rng>, P>>>
 | 
| Rng | operator() (Rng &&rng, F fun, P proj=P{}) const | 
|  |