GCC-4.2.1 is unable to compile code like this:
std::vector<int> v;
std::vector<int>::const_reverse_iterator i;
for (i = v.rbegin(); i != v.rend(); ++i) ;
It's unable to deduce const overload for 'rend':
"no match for ‘operator!=’ in ‘i != std::vector<_Tp, _Alloc>::rend()"
However, the following code compiles fine:
std::vector<int> v;
std::vector<int>::const_reverse_iterator i = v.rbegin(), e = v.rend();
for (i != e; ++i) ;
This was reported by Ryan Shmidt.
void bitmaps_t::insert(const Go *go, const State *s)
{
- for (rciter_t i = maps.rbegin(); i != maps.rend(); ++i) {
+ rciter_t i = maps.rbegin(), e = maps.rend();
+ for (; i != e; ++i) {
if (matches(i->go, i->on, go, s)) return;
}
const bitmap_t *bitmaps_t::find(const Go *go, const State *s) const
{
- for (rciter_t i = maps.rbegin(); i != maps.rend(); ++i) {
+ rciter_t i = maps.rbegin(), e = maps.rend();
+ for (; i != e; ++i) {
if (i->on == s && matches(i->go, i->on, go, s)) return &(*i);
}
return NULL;