Header file range/v3/algorithm/rotate.hpp

#include <range/v3/range_fwd.hpp>

#include <range/v3/begin_end.hpp>

#include <range/v3/iterator_range.hpp>

#include <range/v3/range_concepts.hpp>

#include <range/v3/range_traits.hpp>

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

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

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

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

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

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

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

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

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

Class ranges::v3::rotate_fn

struct rotate_fn
{
    template <typename I, typename S, int _concept_requires_194 = 42, typename std::enable_if<(_concept_requires_194==43)||(Permutable<I>()&&Sentinel<S, I>()), int>::type=0>
    iterator_range<I> operator()(I begin, I middle, S end) const;
    
    template <typename Rng, typename I = range_iterator_t<Rng>, int _concept_requires_210 = 42, typename std::enable_if<(_concept_requires_210==43)||(Range<Rng>()&&Permutable<I>()), int>::type=0>
    meta::if_<std::is_lvalue_reference<Rng>, iterator_range<I>, dangling<iterator_range<I>>> operator()(Rng&& rng, I middle) const;
};

@{


Variable ranges::v3::rotate

constexpr auto& rotate = static_const<with_braced_init_args<rotate_fn>>::value;

rotate_fn