| 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),
|
|---|