According to [lib.bidirectional.iterators] it's not OK to decrement
an iterator pointing to the beginning of the sequence. Fortunately random
access iterators provided by (current versions of) gcc/libstdc++ don't have
this silly limitation, so the code which works with pointers works with
iterators without any changes at all. However,
- there's no guarantee that the current behavior won't change in the future
- some non-GNU compilers are not that smart (i.e. the program segfaults
upon when decrementing beginning-of-the-sequence iterator).
(cherry picked from commit
dda45abd8a2c408f8b3eb7959a10dfb2468ecc3a)
Gparameter newa;
Gparameter::const_iterator it2 = short_a.begin();
Gparameter newa;
Gparameter::const_iterator it2 = short_a.begin();
- for (--it2; it2 != it;) {
- ++it2;
+ for (; it2 != it; ++it2) {
++it2;
for (; it2 != short_a.end(); ++it2) {
newa.push_back(*it2);
++it2;
for (; it2 != short_a.end(); ++it2) {
newa.push_back(*it2);