title: Assigning to an object
body: <p>Is there any reasonable explanation of following techinque:  </p>
  
  <pre><code>//value HAS TO BE CHANGED those are requirements
  int f(int value)
  {
  int tmp = value;//In order to not change "value" inside fnc - again requirements
  //do something with tmp
  return tmp;
  }
  
  int a = 0;
  a = f(a);//here I assign to a anyway
  </code></pre>
  
  <p>instead of this:  </p>
  
  <pre><code>void f(int&amp; value)
  {
  //do something with value
  }
  </code></pre>
  
  <p>or this:  </p>
  
  <pre><code>int f(int&amp; value)
  {
  //do something with value
  return value;
  }
  </code></pre>
  
  <p>and would you agree that first code snippet is (in general) an example of bad programming practice?</p>