By following this logic, any code with any flaw in it would have to be rejected.
Are you trying to say that any class which acts somewhat like an iterator but happens not to have a post-increment operator is somehow deficient? Why does it matter if such a class doesn't fit the precise definition of "iterator?" That's no reason not to be able to use it in a generic method.
My POINT which has been lost in standards trivia here, is that pre-increment is in many senses a more "generic" operation than post-increment, and should be preferred by default.