Hi. I had the same question that is answered there, but the answer didn't fit my problem. I'm using scoped_ptr<node> inside node itself, so node is incomplete at the point of use. That forbids using auto_ptr, IIUC. I think it would be good to add to the answer: Q. Why doesn't scoped_ptr have a release() member? A. When reading source code, it is valuable to be able to draw conclusions about program behavior based on the types being used. If scoped_ptr had a release() member, it would become possible to transfer ownership of the held pointer, weakening its role as a way of limiting resource lifetime to a given context. Use std::auto_ptr where transfer of ownership is required, or shared_ptr if incomplete type support is needed. "or shared_ptr if incomplete type support is needed." is mine. How's that? Regards, Bruno