■
Scoped は boost::bind と組み合わせて使うと、いっそうぷるぷるするだろう。例として、MSDN の『BSTR 用のメモリの割り当てと解放』の二個めの例を改変する。
#include <boost/bind.hpp>
#include "Scoped.hpp"// BSTR を取得するための関数の宣言
HRESULT IWebBrowser2::get_StatusText(BSTR FAR* pbstr);{
BSTR bstrStatus;
pBrowser->get_StatusText(&bstrStatus);
Scoped finally(
make_scoped(
boost::bind(::SysFreeString, bstrStatus)));// この後の処理で予期しない例外が発生したとしても、必ず開放される。
}
まあ、BSTR はラッパーを作るほうが実際的だけど。