title: How to make a rValue reference available outside the try-block in which the RR obtains its value?
body: <p>Assume that we don't want to redesign function <code>a_func_that_may_throw</code>.</p>
  
  <pre><code>try {
      T&amp;&amp; rr = a_func_that_may_throw();
  }
  catch (const std::exception&amp; e) {
      /* Deal with the exception here. */
  }
  // Question: How to adapt the code above so as to have `rr` available here?
  </code></pre>
  
  <p>Sorry for not asking my question clear. The following is added to (hopefully) make the question clearer.</p>
  
  <p>We can do this to pointers:</p>
  
  <pre><code>T *ptr = nullptr;
  try {
      ptr = a_source_that_may_throw();
  }
  catch (const std::exception&amp; e) {
      /* We know what happened in the try block and can do something without `ptr`. */
  }
  // `ptr` is available out side the try block.
  </code></pre>
  
  <p>Since C++11, we have had rValue reference on our tool shelves, which saves us from inefficiently copying huge objects returned by existing (probably bad designed) functions. Is it possible to enjoy both advantages, so we don't have to copy and can still access the returned object the same way <code>ptr</code> is used in the above code?</p>
  
  <p>Thanks. m(_ _)m</p>