以前、Copy&Swap技法 について記事を書きましたが、今回はSwap技法を使った別のちょっとした小技を紹介しましょう。 オブジェクトを初期状態に戻すときに次のようにswapを使うことができるのです(ただしクラスのメンバ関数にswap関数が定義されている場合です)。 Widget widget; widget.doSomething(); ←オブジェクトの状態を変化させるメソッドの実行 ... Widget().swap(widget); ← オブジェクトを初期状態に戻すイディオム ... Widget().swap(widget)が何を行っていると言うと、まずWidget()で名前のない一時オブジェクトをデフォルトコンストラクタで生成しています。そして生成された一時オブジェクトのswapメンバ関数を呼んで引数にwidgetを与えてます。そうすることで生成された一時オブジェクトとwidg