static I impl()

in include/range/v3/algorithm/partition.hpp [76:99]


            static I impl(I begin, S end_, C pred_, P proj_, concepts::BidirectionalIterator*)
            {
                auto && pred = as_function(pred_);
                auto && proj = as_function(proj_);
                I end = ranges::next(begin, end_);
                while(true)
                {
                    while(true)
                    {
                        if(begin == end)
                            return begin;
                        if(!pred(proj(*begin)))
                            break;
                        ++begin;
                    }
                    do
                    {
                        if(begin == --end)
                            return begin;
                    } while(!pred(proj(*end)));
                    ranges::iter_swap(begin, end);
                    ++begin;
                }
            }