void onDelete(Debug_Obj* ptr) { delete ptr; std::cout << "Pointer deleted" << std::endl; } int main() { std::tr1::shared_ptr Ptr(new Debug_Obj, onDelete); }