50template <
typename I>
inline
51iterator_range<I>::iterator_range(iterator first, iterator last):
59template <
typename I>
inline
60typename iterator_range<I>::iterator
61iterator_range<I>::begin()
const
68template <
typename I>
inline
69typename iterator_range<I>::iterator
70iterator_range<I>::end()
const
77template <
typename I>
inline
78typename iterator_range<I>::iterator
79iterator_range<I>::operator->()
const
81 LASS_ASSERT(!this->empty());
87template <
typename I>
inline
88typename iterator_range<I>::reference
89iterator_range<I>::operator*()
const
91 LASS_ASSERT(!this->empty());
97template <
typename I>
inline
98typename iterator_range<I>::reference
99iterator_range<I>::operator[](difference_type index)
const
101 LASS_ASSERT(index < this->size());
102 iterator result = first_;
103 std::advance(result, index);
109template <
typename I>
inline
111iterator_range<I>::operator++()
113 LASS_ASSERT(first_ != last_);
120template <
typename I>
inline
122iterator_range<I>::operator++(
int)
124 iterator_range<I> result(*
this);
131template <
typename I>
inline
132const typename iterator_range<I>::difference_type
133iterator_range<I>::size()
const
135 return std::distance(first_, last_);
140template <
typename I>
inline
141bool iterator_range<I>::empty()
const
143 return first_ == last_;
148template <
typename I>
inline
149bool iterator_range<I>::operator!()
const
151 return this->empty();
156template <
typename I>
inline
157iterator_range<I>::operator bool()
const
159 return !this->empty();
164template <
typename I>
inline
165void iterator_range<I>::swap(iterator_range<I>& other)
167 std::swap(first_, other.first_);
168 std::swap(last_, other.last_);
183template <
typename I>
inline
184iterator_range<I> range(
const I& a,
const I& b)
186 return iterator_range<I>(a, b);
191template <
typename T,
size_t n>
inline
192iterator_range<T*> range(T (&a)[n])
194 return iterator_range<T*>(a, a + n);
199template <
typename I>
inline
200bool operator==(
const iterator_range<I>& a,
const iterator_range<I>& b)
202 return a.begin() == b.begin() && a.end() == b.end();
207template <
typename I>
inline
208bool operator!=(
const iterator_range<I>& a,
const iterator_range<I>& b)
lass extensions to the standard library
Library for Assembled Shared Sources.