
Eric Niebler wrote:
2) Grab tracking_ptr.hpp from boost-sandbox/boost/xpressive/detail/utility (can also be found in xpressive.zip from the Boost Sandbox File Vault).
I had to solve the same problem for xpressive, where regex objects can embed other regex objects, either "by value" or "by reference". This leads to all sorts of interesting cyclic ref-count scenarios. I use tracking_ptr to handle this.
indeed also my context has to do with regular expressions and mutual cyclic ref-count scenarios (in source-highlight http://www.gnu.org/software/src-highlite). As I said in a response to a previous post, I solved the problem by storing weak pointers in the cyclic structures and store a shared pointer into a list that is kept alive for all the life of the cyclic structures.
Unfortunately, tracking_ptr is not documented. I forces you to separate your object into a handle-body, where the body inherits from enable_reference_tracking<Body>, and the handle holds a tracking_ptr<Body>. There's more, but maybe you can figure out the rest by seeing how xpressive uses tracking_ptr.
OK, thanks! Lore -- +-----------------------------------------------------+ | Lorenzo Bettini ICQ# lbetto, 16080134 | | PhD in Computer Science | | Dip. Sistemi e Informatica, Univ. di Firenze | | Florence - Italy (GNU/Linux User # 158233) | | Home Page : http://www.lorenzobettini.it | | http://music.dsi.unifi.it XKlaim language | | http://www.lorenzobettini.it/purple Cover Band | | http://www.gnu.org/software/src-highlite | | http://www.gnu.org/software/gengetopt | | http://www.lorenzobettini.it/software/gengen | | http://www.lorenzobettini.it/software/doublecpp | +-----------------------------------------------------+