5. It never deletes data unsafely, but sometimes fails to delete garbage. If one were to destroy the last reference to a doubly linked list, the list elements would still be referring to each other, and so would not be deleted. In general, the reference counting scheme fails to reclaim "cyclic" data structures. For this reason, STL offers weak_ptr, which allows the pointed object to be deleted. So one might use a shared_ptr for the NEXT list node and a weak_ptr for the PREVIOUS node.