
"Peter Dimov" <pdimov@mmltd.net> writes:
std::map< boost::shared_ptr<void>, int > wpmap;
void write( std::ostream & os, int const & v ) { os << v << ' '; }
void write( std::ostream & os, std::string const & v ) { os << v << ' '; }
template<class T> void write( std::ostream & os, boost::shared_ptr<T> const & pt ) { if( pt ) { int pid = wpmap[ pt ];
if( pid != 0 ) { write( os, pid ); } else { pid = wpmap.size();
I could be wrong, but don't you need to add 1 here? wpmap starts out empty, after all.
wpmap[ pt ] = pid; write( os, pid ); write( os, *pt ); } } else { write( os, 0 ); } }
-- Dave Abrahams Boost Consulting http://www.boost-consulting.com