1 #ifndef _theplu_yat_utility_range_
2 #define _theplu_yat_utility_range_
62 Range(T first, T last);
104 template<
typename T1,
typename T2>
114 template<
typename T1,
typename T2>
128 template<
typename T1,
typename T2>
129 bool operator<(const Range<T1>& lhs,
const Range<T2>& rhs);
138 template<
typename T1,
typename T2>
139 bool operator<=(const Range<T1>& lhs,
const Range<T2>& rhs);
148 template<
typename T1,
typename T2>
158 template<
typename T1,
typename T2>
168 : first_(first), last_(last)
184 first_ = rhs.
begin();
190 template<
typename T1,
typename T2>
195 T1 first1(lhs.
begin());
197 T2 first2(rhs.
begin());
199 while (first1 != last1 && first2 != last2) {
200 if (*first1 != *first2)
206 return first1==last1 && first2==last2;
210 template<
typename T1,
typename T2>
217 template<
typename T1,
typename T2>
218 bool operator<(const Range<T1>& lhs,
const Range<T2>& rhs)
220 return std::lexicographical_compare(lhs.begin(), lhs.end(),
221 rhs.begin(), rhs.end());
225 template<
typename T1,
typename T2>
232 template<
typename T1,
typename T2>
233 bool operator<=(const Range<T1>& lhs,
const Range<T2>& rhs)
239 template<
typename T1,
typename T2>
Range(void)
Default Constructor.
Definition: Range.h:164
T end(void) const
Definition: Range.h:177
Range & operator=(const Range &)
Does not modify underlying data.
Definition: Range.h:182
A class for storing a shallow copy of a Range.
Definition: Range.h:45
bool operator!=(const Range< T1 > &, const Range< T2 > &)
Based on operator==.
Definition: Range.h:211
bool operator>(const Range< T1 > &, const Range< T2 > &)
Definition: Range.h:226
bool operator==(const Range< T1 > &, const Range< T2 > &)
Equality comparison.
Definition: Range.h:191
T begin(void) const
Definition: Range.h:172
T iterator_type
Definition: Range.h:51
bool operator>=(const Range< T1 > &, const Range< T2 > &)
Definition: Range.h:240