うーん...
swap関数と例外安全性と複数回コピーとの関連が複雑でわけわからん
ことになってしまいました。
ケースによっては、とか更に理解困難です。