As of POOL V0.5 we implement is the following:
POOL instantiates all persistent objects (usually as part of
the smart pointer dereferencing operators (eg ReF::operator->() ).
Memory is de-allocated by POOL and released when the last Ref pointing
to that object is destructed.
Basically the same policy applies. If a user marks an object for writing
at the same the ownership is passed to the POOL cache. The user code should
not (as in previous releases) delete any objects for which mark write has
been called. The objects will be deleted automatically after their
transaction context has been committed. User should not make any assumptions
on the sequence in which object are destroyed.