shared_ptr is a reference counting smart pointer in the Boost library.
The problem with reference counting is that it cannot dispose of cycles. I am wondering how one would go about solving this in C++.
Please no suggestions like: "don't make cycles", or "use a weak_ptr".
Edit
I don't like suggestions that say to just use a weak_ptr because obviously if you know you will create a cycle, then you wouldn't have a problem. You also cannot know you will have a cycle in compile time if you generate shared_ptrs during runtime.
So please, self delete answers that use weak_ptr in them because I specifically asked not to have those kind of answers...