
Phil Bouchard wrote:
More than a year ago I have submitted a quite stable version of the shifted_ptr memory manager. I am not aware of the level of understanding of it but I am planning writing more documentation, helping introducing it quicker. For now there is a quick presentation which can be found at: http://svn.boost.org/svn/boost/sandbox/shifted_ptr/libs/smart_ptr/doc/Shifte...
So basically you're saying you invented a new garbage collecting scheme that handles cyclic references and that doesn't have some of the problems of mark and sweep. A high-level explanation of how the scheme works, its semantics, and performance considerations would be useful. I see you're calling destructors, which you probably shouldn't. Indeed, the fact you support cyclic references means that there is no order in which to call the destructors to satisfy that every other object an object references is alive in its destructor. This is the reason why not supporting cyclic references is actually a good thing, since otherwise the scheme is only applicable to PODs.