Quick Q: Removing item from vector, while in C++11 range 'for' loop?
Quick A: it is not possible
Recently on SO:
Removing item from vector, while in C++11 range 'for' loop?
No, you can't. Range-based for is for when you need to access each element of a container once.
You should use the normal for loop or one of its cousins if you need to modify the container as you go along, access an element more than once, or otherwise iterate in a non-linear fashion through the container.
For example:
auto i = std::begin(inv); while (i != std::end(inv)) { // Do some stuff if (blah) i = inv.erase(i); else ++i; }