void vector8_inc(std::vector<uint8_t> &v) { for (uint8_t &x : v) { ++x; } }
No need to deal with indices or pointers, no obfuscated code, no additional variables, only one clearly stated side effect (we don't need to update a local variable), reads like simple English. I personally don't like C++ (I prefer C) but why would you write C like code in C++?