title: boost::optional vs boost::make_optional
body: <p>I would like to understand better the difference between creating a <em>boost::optional</em> object using the <em>default</em> constructor:</p>
  <pre><code>boost::optional&lt;PastaType&gt; pasta = boost::optional&lt;PastaType&gt;(spaghetti)
  </code></pre>
  <p>or using the <em>make_optional</em> version:</p>
  <pre><code>boost::optional&lt;PastaType&gt; pasta = boost::make_optional&lt;PastaType&gt;(spaghetti)
  </code></pre>
  <p>Looking around I just understoood that with the <em>make_optional</em> version PastaType cannot be a reference type, but I would like to figure out better when to use one or the other.</p>
  <p>Thanks!</p>