>>554
swap があってもダメでしょ。forward iterator だと、そもそも「二回読み出せない」
なんつーのもありえる(標準入力とか)から、最初の要素をコピーした直後に例外
が発生すると、どのみち元には戻らない。