I think it would be better to refactor this so that all the loop management goes here. Something like:

``` C++
for (iter_t it = subs.begin(), iter_t next_it = it+1;
     it != subs.end();
     it = ++next_it)
```