title: Extracting a raw pointer from a shared_ptr
body: <p>Is it possible to extract a raw pointer from a <code>std::shared_ptr</code> or <code>std::tr1::shared_ptr</code> object? The intent is to tell the smart pointer object that I don't want it to manage the lifetime of the object anymore. The context is that I have an API that takes a raw pointer from users and does some processing on the object. To make things easier to manage API creates a <code>shared_ptr</code> out of this raw pointer. Now, the user might ask for the object to be returned. In that case, when giving the processed object back to the user I want to give back the raw pointer. However, I have not found a way to do that. Using <code>.get()</code> is not possible as then the smart pointer will have to be kept alive indefinitely. I would have given back a <code>unique_ptr</code> but that is not available in <code>tr1</code>.</p>
  
  <p>Basically I want to move the raw pointer out of the shared_ptr.</p>