// 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