title: Does an std::optional parameter create a copy?
body: <p>I have a function that takes an std::optional</p>
  
  <p><code>void foo(const std::optional&lt;T&gt;&amp; opt);</code></p>
  
  <p>But copying <code>T</code> is expencive.</p>
  
  <p>Does this create a copy of <code>T</code>?</p>
  
  <p>If so, how can I not create a copy?</p>