Boost::Python object with custom deleter
===

I'm trying to make an object that is created and deleted using a factory visible to python.  
The object has private constructor and destructor, and the factory lifetime must be bigger than the object it creates.  
It seems like the following code should do it:

    class_<Factory>("Factory")
        .def("CreateObject", &Factory::CreateObject,
             return_internal_reference<1, return_value_policy<manage_new_object>>());

    class_<Object, boost::noncopyable>("Object", no_init);

And it does so with no compiler or runtime errors as far as I can tell.  
The problem is how does boost know how to destroy the object?  
I specified `manage_new_object` so it needs to destroy it, but it cannot call the destructor since its private and I haven't provided it with the name of the factory destruction method.  
How can I specify it? I can add another `def` to `Factory` but that would mean python code will have to deal with destruction of object and can have dangling objects.  
What I want to do is when this object's reference count reaches 0, either `factory.DestroyObject(object)` will be automatically called or even a static function I provide with only the object as argument will be called (the factory can be recovered from the object).