title: ISO C++ says that these are ambiguous
body: <p>I am getting the error:</p>
  
  <p>ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:</p>
  
  <p>Distribution.H:515: note: candidate 1: Probability Normal::cdf(float64_t) const</p>
  
  <p>Distribution.H:512: note: candidate 2: Probability Normal::cdf(const RationalVector&amp;)"</p>
  
  <p>RationalVector is defined as </p>
  
  <pre><code>class RationalVector : public Array&lt;float64_t&gt;
  </code></pre>
  
  <p>I am not able to change this class or the 'cdf' functions, as they are part of a third-party library. My code is giving the error for the following line:</p>
  
  <pre><code>return cABS*( exp(Md + 0.5*Vd)*stdN.cdf(d1) - K*stdN.cdf(d2) );
  </code></pre>
  
  <p>Where d1 and d2 are both doubles. I have tried casting both of them to float64_t to force the use of the first cdf function as such:</p>
  
  <pre><code>return cABS*( exp(Md + 0.5*Vd)*stdN.cdf((float64_t)d1) - K*stdN.cdf((float64_t)d2) );
  </code></pre>
  
  <p>However, the error still persists. </p>
  
  <p>The Normal functions are defined as:</p>
  
  <pre><code>Probability cdf(float64_t x) const;
  Probability cdf(RationalVector const &amp; x);
  </code></pre>
  
  <p>Any ideas as to what the issue is, or how to fix it?</p>