Header file range/v3/numeric/iota.hpp

#include <range/v3/begin_end.hpp>

#include <range/v3/range_traits.hpp>

#include <range/v3/range_concepts.hpp>

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

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

namespace ranges
{
    inline namespace v3
    {
        struct iota_fn
        {
            template <typename O, typename S, typename T, int _concept_requires_29 = 42, typename std::enable_if<(_concept_requires_29==43)||(OutputIterator<O, T const&>()&&Sentinel<S, O>()&&WeaklyIncrementable<T>()), int>::type=0>
            O operator()(O begin, S end, T val) const;
            
            template <typename Rng, typename T, typename O = range_iterator_t<Rng>, int _concept_requires_39 = 42, typename std::enable_if<(_concept_requires_39==43)||(OutputRange<Rng&, T const&>()&&WeaklyIncrementable<T>()), int>::type=0>
            O operator()(Rng& rng, T val) const;
        };
        
        inline namespace 
        {
            constexpr auto& iota = static_const<iota_fn>::value;
        }
    }
}