1 | --- irange.hpp 2011-05-16 12:15:51 +0900
|
---|
2 | +++ irange.hpp.new 2011-05-16 12:15:58 +0900
|
---|
3 | @@ -216,9 +216,11 @@
|
---|
4 |
|
---|
5 | typedef typename range_detail::integer_iterator_with_step<Integer> iterator_t;
|
---|
6 |
|
---|
7 | - const std::ptrdiff_t last_step
|
---|
8 | - = (static_cast<std::ptrdiff_t>(last) - static_cast<std::ptrdiff_t>(first))
|
---|
9 | - / (static_cast<std::ptrdiff_t>(step_size));
|
---|
10 | + const std::ptrdiff_t last_step =
|
---|
11 | + (last==first)
|
---|
12 | + ? 0
|
---|
13 | + : (static_cast<std::ptrdiff_t>(last) - static_cast<std::ptrdiff_t>(first) - 1)
|
---|
14 | + / (static_cast<std::ptrdiff_t>(step_size)) + 1;
|
---|
15 |
|
---|
16 | return strided_integer_range<Integer>(
|
---|
17 | iterator_t(first, 0, step_size),
|
---|