>>595
それでも STL で定められている入力イテレータ・前方イテレータのコンセプトを
前提とする限り strong guarantee は得られない。

*result = *first;

ここでイテレータを介した読み書きが副作用を伴う(たとえば *result = 1 と
すると標準出力に 1 と表示されるようなイテレータとか)だとアウト。また
入力イテレータは二回以上読み出せることを保証してない。

単なる入力イテレータ・前方イテレータではなく、より制約のきついコンセプトを
決める必要がある。