range_set.h

Back to Orphans

pastel/sys/set/

// Description: Range multi-set

#ifndef PASTELSYS_RANGE_SET_H
#define PASTELSYS_RANGE_SET_H

#include "pastel/sys/set/interval_set.h"
#include "pastel/sys/set/transformed_set.h"
#include "pastel/sys/function/dereference_function.h"

namespace Pastel
{

    template <
        typename Iterator,
        typename Sentinel>
    decltype(auto) rangeSet(
        Iterator&& begin, 
        Sentinel&& end)
    {
        return transformedSet(
            intervalSet(
                std::forward<Iterator>(begin), 
                std::forward<Sentinel>(end)
            ),
            Dereference_Function());
    }

    template <typename Container>
    decltype(auto) rangeSet(
        Container&& container)
    {
        return Pastel::rangeSet(
            std::begin(container),
            std::end(container));
    }

}

#endif