From 5b95c8ed0a95cf7568377a36d4eed3f59aea2eb6 Mon Sep 17 00:00:00 2001 From: Ulya Trofimovich Date: Wed, 8 Nov 2017 07:19:21 +0000 Subject: [PATCH] Fix for #198. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit GCC-4.2.1 is unable to compile code like this: std::vector v; std::vector::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 v; std::vector::const_reverse_iterator i = v.rbegin(), e = v.rend(); for (i != e; ++i) ; This was reported by Ryan Shmidt. --- re2c/src/code/bitmap.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/re2c/src/code/bitmap.cc b/re2c/src/code/bitmap.cc index b6b0a927..36a9617d 100644 --- a/re2c/src/code/bitmap.cc +++ b/re2c/src/code/bitmap.cc @@ -27,7 +27,8 @@ bitmaps_t::~bitmaps_t() 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; } @@ -37,7 +38,8 @@ void bitmaps_t::insert(const Go *go, const State *s) 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; -- 2.40.0