title: Why does std::unique_ptr not permit type inference?
body: <p>It would be easier to read/write the second line of my example since the type of the template argument is obvious:</p>
  <pre><code>#include &lt;memory&gt;
  
  struct Foo{};
  
  int main()
  {
    // redundant: good
    auto foo1 = std::unique_ptr&lt;Foo&gt;(new Foo());
    // without explicitness: does not compile
    auto foo2 = std::unique_ptr(new Foo());
  }
  </code></pre>
  <p>Of course, if you want to use polymorphism, we could always write:</p>
  <pre><code>auto base = std::unique_ptr&lt;Base&gt;(new Derived());
  </code></pre>
  <p>What is the reason for such a constraint?</p>