diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h index 49381401d..6c03f519a 100644 --- a/Source/cmAlgorithms.h +++ b/Source/cmAlgorithms.h @@ -112,6 +112,27 @@ struct DefaultDeleter } }; +template +struct Range +{ + typedef const_iterator_ const_iterator; + typedef typename std::iterator_traits::value_type value_type; + Range(const_iterator begin_, const_iterator end_) + : Begin(begin_), End(end_) {} + const_iterator begin() const { return Begin; } + const_iterator end() const { return End; } + bool empty() const { return std::distance(Begin, End) == 0; } +private: + const_iterator Begin; + const_iterator End; +}; + +} + +template +ContainerAlgorithms::Range cmRange(Iter1 begin, Iter2 end) +{ + return ContainerAlgorithms::Range(begin, end); } template