title: Dereferencing a shared pointer and assigning to it
body: <p>Is it ok to dereference a shared pointer, assign and assign a new object to it like so:</p>
  
  <pre><code>void foo()
  {
      std::shared_ptr&lt;std::string&gt; x =
              std::make_shared&lt;std::string&gt;();
  
      bar(*x); // is this fine?
      // x == bsl::string("WHATEVER")
  }
  
  void bar(string&amp; y)
  {
      y = string("whatever");
  }
  </code></pre>