static auto invoke_()

in include/range/v3/view/take.hpp [130:160]


                static auto invoke_(Rng && rng, range_difference_t<Rng> n)
                RANGES_DECLTYPE_AUTO_RETURN
                (
                    take_exactly(
                        std::forward<Rng>(rng),
                        is_infinite<Rng>() ? n : std::min(n, distance(rng)))
                )

#ifdef RANGES_WORKAROUND_MSVC_SFINAE_CONSTEXPR
                template<typename Int, CONCEPT_REQUIRES_(Integral<Int>::value)>
#else
                template<typename Int, CONCEPT_REQUIRES_(Integral<Int>())>
#endif
                static auto bind(take_fn take, Int n)
                RANGES_DECLTYPE_AUTO_RETURN
                (
                    make_pipeable(std::bind(take, std::placeholders::_1, n))
                )

            #ifndef RANGES_DOXYGEN_INVOKED
#ifdef RANGES_WORKAROUND_MSVC_SFINAE_CONSTEXPR
                template<typename Int, CONCEPT_REQUIRES_(!Integral<Int>::value)>
#else
                template<typename Int, CONCEPT_REQUIRES_(!Integral<Int>())>
#endif
                static detail::null_pipe bind(take_fn, Int)
                {
                    CONCEPT_ASSERT_MSG(Integral<Int>(),
                        "The object passed to view::take must be a model of the Integral concept.");
                    return {};
                }