title: What does std::make_unique_for_overwrite() do vis-a-vis std::make_unique()?
body: <p>It appears that in C++20, we're getting some additional utility functions for smart pointers, including:</p>
  <pre><code>template&lt;class T&gt; unique_ptr&lt;T&gt; make_unique_for_overwrite();
  template&lt;class T&gt; unique_ptr&lt;T&gt; make_unique_for_overwrite(size_t n);
  </code></pre>
  <p>and the same for <code>std::make_shared</code> with <code>std::shared_ptr</code>. Why aren't the existing functions:</p>
  <pre><code>template&lt;class T, class... Args&gt; unique_ptr&lt;T&gt; make_unique(Args&amp;&amp;... args); // with empty Args
  template&lt;class T&gt; unique_ptr&lt;T&gt; make_unique(size_t n);
  </code></pre>
  <p>enough? Don't the existing ones use the default constructor for the object?</p>
  <p>Note: In earlier proposals of these functions, the name was <code>make_unique_default_init()</code>.</p>