title: Ambiguous Reference/Value Versions of Functions
body: <p>Consider the following function prototypes:</p>
  
  <pre><code>void Remove(SomeContainer&amp; Vec, const std::size_t Index);
  
  SomeContainer Remove(SomeContainer Vec, const std::size_t Index);
  </code></pre>
  
  <p>The second is implemented in terms of the first.  That is to say, they are functionally identical in every way except that one is pass-by-reference and the other is pass-by-value.</p>
  
  <p>However, GCC says these are ambiguous in cases like this, even though the first form is the only one that does not return a value:</p>
  
  <pre><code>Remove(SomeContainer, 123);
  </code></pre>
  
  <p>Is there any workaround to this, or do I have to come up with different names for each form?</p>