title: Why does compiler not perform implicit conversion, when first operand is not a class object (member function operator overloading)?
body: <p>Let's conside the following member function:</p>
  <pre><code>Rational operator + ( const Rational &amp; ) const;  //Rational is the class name
  </code></pre>
  <p>Complier translates <code>a + b</code> to <code>a.operator+(b)</code></p>
  <p><strong>case 1:</strong> a + 14  //a is <code>Rational</code> class object.<br />
  This works fine, because 14 is implicitly converted to class type <code>Rational</code>  (Am I correct ?)</p>
  <p><strong>case 2:</strong> 14 + a // a is a <code>Rational</code> class object.<br />
  This does not work because 14 is not a <code>Rational</code> class object.</p>
  <p>My question : Why does the compiler not perform impicit conversion in case 2?</p>