Scott Maxwell wrote: >> This is what intrusive_ptr is for. Just define intrusive_ptr_add_ref >> and intrusive_ptr_release for your count class. > > Unless I have missed something, intrusive_ptr has the following > issues: > > 1. You must declare intrusive_ptr_add_ref and intrusive_ptr_release as > top-level functions that take a pointer to your class. This can be > problematic if your client class is a nested private class as in my > prior example. > > 2. You must define the functionality of those two functions. While > the functionality is trivial, it still needs to be done manually for > each > class. Anything manual is subject to error. > > The shared_ptr_embedded and shared_ptr_count pair solve both issues.
No, you only need to implement the addref/release functions for the base class. See libs/smart_ptr/test/intrusive_ptr_test.cpp for an example. A future boost release will probably contain such a base class. I didn't want to introduce one at this time since it may have created confusion, as 1.29 had boost::counted_base that was automatically recognized by shared_ptr. In 1.30 shared_ptr no longer supports intrusive counting. _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost