auto operator()

in include/range/v3/action/action.hpp [120:148]


                auto operator()(Rng & rng, Rest &&... rest) const
                RANGES_DECLTYPE_AUTO_RETURN
                (
                    action_(rng, std::forward<Rest>(rest)...)
                )
                // Currying overload.
                template<typename T, typename...Rest, typename A = Action>
                auto operator()(T && t, Rest &&... rest) const
                RANGES_DECLTYPE_AUTO_RETURN
                (
                    make_action(action_access::impl<A>::bind(action_, std::forward<T>(t),
                        std::forward<Rest>(rest)...))
                )
            };

            template<typename Rng, typename Action,
#ifdef RANGES_WORKAROUND_MSVC_SFINAE_CONSTEXPR
                CONCEPT_REQUIRES_(is_pipeable<Action>::value && Range<Rng &>::value &&
                    Function<bitwise_or, ref_t<Rng &> &&, Action>::value &&
                    Same<ref_t<Rng &>,
                        concepts::Function::result_t<bitwise_or, ref_t<Rng &> &&, Action>>::value)>
#else
                CONCEPT_REQUIRES_(is_pipeable<Action>() && Range<Rng &>() &&
                    Function<bitwise_or, ref_t<Rng &> &&, Action>() &&
                    Same<ref_t<Rng &>,
                        concepts::Function::result_t<bitwise_or, ref_t<Rng &> &&, Action>>())>
#endif
            Rng & operator|=(Rng & rng, Action && action)
            {