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 {};
}