That's only partially related to topic at hand. Even in cases where copy elision takes place, and object is still constructed.
However, as was said before, any performant iterators ought to be header-only implementations, and if they have no side effects, I don't see why a compiler might not do away with the copy altogether.
Personally I always use the prefix increment (unless the other behaviour is needed).
I used to wonder the same thing, but C++ is just weird in that way.