title: Is there any reason not to use std::make_shared when constructing objects?
body: <p>I can't think of any situation where</p>
  
  <pre><code>std::shared_ptr&lt;Object&gt; obj(new Object("foo", 1));
  </code></pre>
  
  <p>would be preferred to</p>
  
  <pre><code>auto obj = std::make_shared&lt;Object&gt;("foo", 1);
  </code></pre>
  
  <p>The latter always results in better locality and reduces memory fragmentation. Is there any situation, where you would prefer (or be forced) to use the first form, except interfacing with code returning raw pointers?</p>