title: return std::make_unique without type parameter
body: <p>For example I got this code:</p>
  
  <pre><code>#include &lt;memory&gt;
  
  class A {
   public:
    A(int i, float f){};
    A(std::string){};
    ...
  };
  
  class B {
   public:
    B(int i){};
    B(float f){};
    ...
  };
  
  std::unique_ptr&lt;A&gt; getA() {
    if (some condition) {
      return std::make_unique&lt;A&gt;(1,1.0);
    } else if (some condition) {
      return std::make_unique&lt;A&gt;("test");
    }
  }
  
  std::unique_ptr&lt;B&gt; getB() {
          if (some condition) {
      return std::make_unique&lt;B&gt;(1);
    } else if (some condition) {
      return std::make_unique&lt;B&gt;(1.0);
    }
  }
  </code></pre>
  
  <p>Can I just write code like this<code>return std::make_unique(1,1.0);</code> (no <code>&lt;A&gt;</code>)? I think the compiler knows the return type, and only constructor parameters of class A matters in this line. So is there any way I can omit the type parameter?</p>
  
  <p>I want this because in the real problem, the are lots of class types(with long names), and each class has lot's of constructors, it's annoying to write <code>return make::unique&lt;*type*&gt;(*parameters*)</code> every time when returning. </p>