#include <boost/shared_ptr.hpp> using boost::shared_ptr; class A { public: shared_ptr<A> next; shared_ptr<A> prev; }; int main(int argc, char **argv) { shared_ptr<A> head(new A()); head->next = shared_ptr<A>(new A()); head->next->prev = head; return 0; }