Only on very rare occasions I need post increment semantics.
And in those cases I prefer to use a temporary to make the intent more clear
If the pre- or post-increment behaviour isn't actually needed, I prefer `x += 1` though.
But I write ; i++){ and seeing it the other way round throws me off for a minute, because I think, as you put it, why would you use those very particular semantics?
But I guess this is only a semantic argument.
The difference is that i++ has to keep a copy to the original around as the return value is the pre-increment value, while with ++i that isn't needed as the resulting value is being returned.
In the for loop that shouldn't matter as a) for an integer it is essentially for free (it is just reordering when the relevant register is set) and b) that value is hopefully optimized out anyways by the compiler, however as there are cases where it matters some people prefer the ++i style, some just think it looks better.
for(auto it = begin(v); it != end(v); ++it)
I miss it when switching between C/++ and other languages.