de> 
and the value of the expression in the last line will be 4:

</p>
<pre class="programlisting">
i = 1;
(_1 = 2, _1 + ref(i))(i);
</pre>
<p>

Note that <code class="literal">ref</code> and <code class="literal">cref</code> are different
from <code class="literal">var</code> and <code class="literal">constant</code>.

While the latter ones create lambda functors, the former do not. 
For example:

</p>
<pre class="programlisting">
int i; 
var(i) = 1; // ok
ref(i) = 1; // not ok, ref(i) is not a lambda func