これでいっか。キャンセルできないけど。
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