title: Reference to function is ambiguous
body: <p>Why is this cause a compiler error, stating that my references are ambiguous? I have a <code>float</code>, <code>int</code> and <code>string</code>, which should all create separate function signatures, right?</p>
  
  <p>Here is what I have so far:</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;string&gt;
  using namespace std;
  
  int plus(int a, int b);
  float plus(float a, float b);
  string plus(string a, string b);
  
  int main(void)
  {
      int n = plus(3, 4);
      double d = plus(3.2, 4.2);
      string s = plus("he", "llo");
      string s1 = "aaa";
      string s2 = "bbb";
      string s3 = plus(s1, s2);
  }
  
  int plus(int a, int b) {
      return a+b;
  } // int version
  
  float plus(float a, float b) {
      return a+b;
  } // float version
  
  string plus(string a, string b) {
      return a+b;
  } // string version
  </code></pre>