当面のスコープガード

これでいっか。キャンセルできないけど。


VC10とgcc-4.6-20100911で動作確認。
GCC 4.5ではnullptrが使えないのでvoid*にキャストした0とかを使えばOK。

#include <iostream>
#include <memory>

void foo()
{
    std::cout << "start" << std::endl;
    std::shared_ptr<void> p(nullptr, [](void*){ std::cout << "scope end" << std::endl; });
    std::cout << "end" << std::endl;
}

int main()
{
    foo();
}
start
end
scope end