C++ execution order in method chaining
<p>The output of this program:</p>

<pre><code>#include &lt;iostream&gt; 
class c1
{   
  public:
    c1&amp; meth1(int* ar) {
      std::cout &lt;&lt; "method 1" &lt;&lt; std::endl;
      *ar = 1;
      return *this;
    }
    void meth2(int ar)
    {
      std::cout &lt;&lt; "method 2:"&lt;&lt; ar &lt;&lt; std::endl;
    }
};

int main()
{
  c1 c;
  int nu = 0;
  c.meth1(&amp;nu).meth2(nu);
}
</code></pre>

<p>Is:</p>

<pre><code>method 1
method 2:0
</code></pre>

<p>Why is <code>nu</code> not 1 when <code>meth2()</code> starts?</p>