I'm confused although others here may not be. It would help me if you could give a simple example of input and output and an explanation of how your iterator works. The code would be great, if short enough.
Given my understanding of the word "permutation", I can't get past the statement that an iterator may be infinite...