title: Why std::make_shared has to be provided type info but std::make_pair doesn't have to?
body: <p>For example, when we want to create a std::pair, we can simply call:</p>
  
  <pre><code>std::make_pair(5, "foo");
  </code></pre>
  
  <p>But when we intend to create a shared_ptr, we have to provide type info:</p>
  
  <pre><code>std::make_shared&lt;Foo&gt;("Boo", 1024);
  </code></pre>
  
  <p>Is there any reason that makes them different?</p>