title: Does std::make_shared(new Foo()) create singletons?
body: <p>When <code>std::make_shared(new Foo())</code> is called, it constructs a Foo and returns a <code>std::shared_ptr&lt;Foo&gt;</code> for the caller (viz. <a href="http://en.cppreference.com/w/cpp/memory/shared_ptr/make_shared" rel="nofollow" title="here">here</a>). If this is called multiple times from various objects, does it construct a <code>new Foo()</code> each time? In this case is it no different than each caller getting a single reference to a new object, acting in practicality like a unqiue_ptr?</p>
  
  <p>Or does it make one <code>Foo()</code> the first time and then subsequently returning <code>std::shared_ptr</code>s to it, knowing that it will act like a Singleton of sorts (and of course deleting once the last <code>std::shared_ptr</code> is destroyed)? Is this platform specific?</p>
  
  <p>Specifically a function as such:</p>
  
  <pre><code>std::shared_ptr&lt;Foo&gt; makeFoo()
  {
    return std::make_shared&lt;Foo&gt;();
  }
  </code></pre>