In my current project I am using boost::shared_ptr quite extensively.
boost::shared_ptr
Recently my fellow team mates have also started using weak_ptr. I don
weak_ptr
You should probably not be trying to use weak pointers at all unless you are trying to implement a garbage collector, which is not a hot idea in C++ because it's too hard to keep track of everything that could go wrong closely enough.