拝見いたしました!iとresultは同じ型で、尚且つOutputIteratorだからです!
例えば元がint列で出力先がfloat列となるとしたらあなたの書き方では型エラーとなります!
関心事はインデックスです。だから差を取るのです! std::distance