I believe that anywhere you have a custom operator++ defined on a class and you make a temporary copy of the class in operator++ then the compiler cannot optimize that away because nontrivial code may run in the class constructor.

Its a very *minor* detail, but more or less just about avoiding premature optimizations whilst you're at it.