static range rotate_forward()

in include/range/v3/algorithm/rotate.hpp [69:100]


            static range<I> rotate_forward(I begin, I middle, S end)
            {
                I i = middle;
                while(true)
                {
                    ranges::iter_swap(begin, i);
                    ++begin;
                    if(++i == end)
                        break;
                    if(begin == middle)
                        middle = i;
                }
                I r = begin;
                if(begin != middle)
                {
                    I j = middle;
                    while(true)
                    {
                        ranges::iter_swap(begin, j);
                        ++begin;
                        if(++j == end)
                        {
                            if(begin == middle)
                                break;
                            j = middle;
                        }
                        else if(begin == middle)
                            middle = j;
                    }
                }
                return {r, i};
            }