title: In c++ why is pass by reference is directed by callee rather than by caller
body: <p>In c++, the function signature defines that it will take the arguments by reference or value. Isn’t it the caller should decide what it wants to pass by reference or value?
  Suppose caller does not want the function to modify its values, and is unsure of what the calle is doing inside its function. Then the caller does not have a right to say that the arguments should not be modified. </p>
  
  <p>How is this C++ definiton justified?</p>