 <p>NOTE: My previous answer was wrong. It has now been corrected.</p> <p>C/C++ do not implement anything like Call-By-Value-Result (natively). As I understand it, that's an ADA term (Working on government code?). Call-By-Value would result in 15, Call-By-Reference is the trickiest one, because you would be modifying <code>a</code> in line 3 as well as line 4 of your example.</p> <p>--EDIT--</p> <p>I have implemented the following code, which I believe to be a valid representation of the syntax described (I'm not familiar enough with ADA to do the test directly, maybe someone else can). As you will see, the result for By-Value-Result is 15. </p> <pre><code>#include &lt;iostream&gt; int a_v, a_r, a_vr; void foo_by_val(int x) { x = x + 10; a_v = a_v + x; } void foo_by_ref(int &amp;x) { x = x + 10; a_r = a_r + x; } void foo_by_value_result(int &amp;x_ref) { int x = x_ref; x = x + 10; a_vr = a_vr + x; // x = x_ref; &lt;-- My previous mistake x_ref = x; } void fie( ){ a_v = 5; a_r = 5; a_vr = 5; foo_by_val(a_v); foo_by_ref(a_r); foo_by_value_result(a_vr); std::cout &lt;&lt; "By Value: " &lt;&lt; a_v &lt;&lt; std::endl; std::cout &lt;&lt; "By Refference: " &lt;&lt; a_r &lt;&lt; std::endl; std::cout &lt;&lt; "By Value Result: " &lt;&lt; a_vr &lt;&lt; std::endl; } int main() { fie(); return 0; } </code></pre> <p>Result:</p> <pre><code>By Value: 20 By Reference: 30 By Value Result: 15 </code></pre>