title: Throw exception by value or reference
body: <p>From this answer <a href="https://stackoverflow.com/a/36738405/4523099">https://stackoverflow.com/a/36738405/4523099</a> :</p>
  
  <blockquote>
    <p>A throw-expression with no operand rethrows the currently handled
    exception. The exception is reactivated with the existing temporary;
    no new temporary exception object is created.
    -- ISO/IEC 14882:2011 Section 15.1 par. 8</p>
  </blockquote>
  
  <p>So why I am getting this results from this code?</p>
  
  <p><strong>code:</strong></p>
  
  <pre><code>#include &lt;iostream&gt;
  
  class my_exception: public std::exception{
  public:
      int value;
  };
  int main()
  {
      my_exception ex;
      ex.value=1;
      try{
          throw ex;
      }
      catch(my_exception&amp; e){
          e.value=2;
      }
      std::cout &lt;&lt; ex.value;
     return 0;
  }
  </code></pre>
  
  <p><strong>Actual result:</strong></p>
  
  <blockquote>
    <p>1</p>
  </blockquote>
  
  <p>I thought it should be 2 depending on the standard quota. What am I missing?</p>