Opened 14 years ago
Last modified 14 years ago
#2129 new Feature Requests
iterator problem in ublas::basic_range (boost/numeric/ublas/storage.hpp)
| Reported by: | Owned by: | Gunter | |
|---|---|---|---|
| Milestone: | To Be Determined | Component: | uBLAS |
| Version: | Boost 1.35.0 | Severity: | Optimization |
| Keywords: | Cc: |
Description
Decrementing (--) a forward iterator through a basic_range containing negative values throws an error (bad_index). This seems inconsistent because it is possible to increment (++) through such a range without throwing error.
lines 937 - 941 of boost/numeric/ublas/storage.hpp read
const_iterator &operator -- () {
BOOST_UBLAS_CHECK (it_ > 0, bad_index ());
-- it_;
return *this;
}
Removing "BOOST_UBLAS_CHECK (it_ > 0, bad_index ());" solves the problem. Similarly for the += and -= operators.
The documentation makes no mention of the range needing to consist only of positive values and this seems a rather arbitrary restriction.
Change History (1)
comment:1 by , 14 years ago
| Milestone: | Boost 1.36.0 → To Be Determined |
|---|---|
| Severity: | Problem → Optimization |
| Type: | Bugs → Feature Requests |
Note:
See TracTickets
for help on using tickets.

The type of indices is by default "unsigned long". Thus we have to assure that we do not decrement a 0. Support of signed types for indices requires some work - I'll change this task to a feature request.
Additionally, we should add checks to the increment functions.