rangealgorithm_concept.h

Back to Iterator

pastel/sys/

// Description: Range algorithm concept

#ifndef PASTELSYS_RANGEALGORITHM_CONCEPT_H
#define PASTELSYS_RANGEALGORITHM_CONCEPT_H

#include "pastel/sys/algorithm_concept.h"

namespace Pastel
{

    namespace RangeAlgorithm_Concept
    {

        class RangeAlgorithm
            : public Algorithm_Concept::Algorithm
        {
        public:
            //! Applies the algorithm to an iterator range.
            template <typename ForwardRange>
            void operator()(ForwardRange range);
        };

    }

    namespace RangeAlgorithm2_Concept
    {

        class RangeAlgorithm2
            : public Algorithm_Concept::Algorithm
        {
        public:
            //! Applies the algorithm to iterator ranges.
            template <
                typename A_ForwardRange,
                typename B_ForwardRange>
            void operator()(
                A_ForwardRange aRange,
                B_ForwardRange bRange);
        };

    }

    namespace RangeAlgorithm3_Concept
    {

        class RangeAlgorithm3
            : public Algorithm_Concept::Algorithm
        {
        public:
            //! Applies the algorithm to iterator ranges.
            template <
                typename A_ForwardRange,
                typename B_ForwardRange,
                typename C_ForwardRange>
            void operator()(
                A_ForwardRange aRange,
                B_ForwardRange bRange,
                C_ForwardRange cRange);
        };

    }

}

#endif