title: Perfect forward return type but with const
body: <p>I want to perfect-forward a call to a function, but I always want to return a <code>const</code> version of the returned type. I mean, when returning a reference, I want a <code>const&amp;</code> instead. How can I achieve that?</p>
  <ul>
  <li>I don't care about non-reference types. After all, returning a const T (without a reference) is not much different than <code>T</code>.</li>
  <li>I care only about a <code>const</code> at the top level. If <code>T</code> is a pointer type, or some other more complex type, I do not want to add constness somewhere deeper.</li>
  </ul>
  <p>If I just forward the call normally:</p>
  <pre><code>template&lt;class Func, class... Args&gt;
  decltype(auto) Example(Func f, Args&amp;&amp;... args) 
  { 
      return fun(std::forward&lt;Args&gt;(args)...); 
  }
  </code></pre>
  <p>and <code>f</code> happens to return, say, <code>int&amp;</code> then I just get just that: <code>int&amp;</code>. But I would like to get a <code>const int&amp;</code> instead.</p>
  <p><code>decltype(auto) const</code>, or <code>decltype(auto const)</code> seem to be illegal.</p>