title: What type does the conversion logic target?
body: <p>I don't understand why in the following code the expression <code>C c3 = 5 + c;</code>
  doesn't get compiled although 5 could be converted to type C as in the previous statement.</p>
  
  <pre><code>#include &lt;iostream&gt;
  
  class C 
  {
      int m_value;
  public:
      C(int value): m_value(value) {} ;
  
      int get_value() { return m_value; } ; 
  
      C operator+(C rhs) { return C(rhs.m_value+m_value); }
  };
  
  int main()
  {
      C c = 10;
      C c2 = c + 5; // Works fine. 5 is converted to type C and the operator + is called
      C c3 = 5 + c; // Not working: compiler error. Question: Why is 5 not converted to type C??
  
      std::cout &lt;&lt; c.get_value() &lt;&lt; std::endl; // output 10
      std::cout &lt;&lt; c2.get_value() &lt;&lt; std::endl; // output 15
  
  }
  
  
  
  </code></pre>