Header file range/v3/algorithm/generate.hpp

#include <range/v3/range_fwd.hpp>

#include <range/v3/begin_end.hpp>

#include <range/v3/range_concepts.hpp>

#include <range/v3/range_traits.hpp>

#include <range/v3/utility/iterator_concepts.hpp>

#include <range/v3/utility/static_const.hpp>

#include <range/v3/utility/tagged_pair.hpp>

#include <range/v3/algorithm/tagspec.hpp>

namespace ranges
{
    inline namespace v3
    {
        struct generate_fn;
        
        inline namespace 
        {
            constexpr auto& generate = static_const<with_braced_init_args<generate_fn>>::value;
        }
    }
}

Class ranges::v3::generate_fn

struct generate_fn
{
    template <typename O, typename S, typename F, int _concept_requires_35 = 42, typename std::enable_if<(_concept_requires_35==43)||(Function<F>()&&OutputIterator<O, concepts::Function::result_t<F>&&>()&&Sentinel<S, O>()), int>::type=0>
    tagged_pair<tag::out(O), tag::fun(F)> operator()(O, F, O begin, S end, F fun) const;
    
    template <typename Rng, typename F, typename O = range_iterator_t<Rng>, int _concept_requires_47 = 42, typename std::enable_if<(_concept_requires_47==43)||(Function<F>()&&OutputRange<Rng, concepts::Function::result_t<F>&&>()), int>::type=0>
    tagged_pair<tag::out(range_safe_iterator_t<Rng>), tag::fun(F)> operator()(range_safe_iterator_t<Rng>, F, Rng&& rng, F fun) const;
};

@{


Variable ranges::v3::generate

constexpr auto& generate = static_const<with_braced_init_args<generate_fn>>::value;

generate_fn