If only make_unique (and make_shared) worked with uniform initialization...<p><pre><code>  struct Foo {
    int i;
    float f;
    bool b;

    &#x2F;&#x2F; No constructor
  };

  std::make_unique&lt;Foo&gt;(1, 2.3f, true);
</code></pre>
Doesn&#x27;t compile, since make_unique requires an appropriate constructor (see <a href="https:&#x2F;&#x2F;isocpp.org&#x2F;files&#x2F;papers&#x2F;n3588.txt" rel="nofollow">https:&#x2F;&#x2F;isocpp.org&#x2F;files&#x2F;papers&#x2F;n3588.txt</a> for the rationale).<p>It also doesn&#x27;t work when Foo&#x27;s constructor is private, even when called from a function that would have access to this private constructor.<p>And this is my beef with C++: Yes it&#x27;s powerful, and I quite like it, but you sooner or later hit these speed bumps that unnecessarily complicate things.