title: Why implicit constructor with one parameter prints the last value, if multiple values are passed during object creation?
body: <p>I have a class 'Entity'. It has a user-defined constructor (implicit) with one argument as shown below.</p>
  <pre><code>class Entity
  {
  public:
      Entity(int a)
      {
          std::cout &lt;&lt; a &lt;&lt; std::endl;
      }
      Entity(const std::string&amp; s)
      {
          std::cout &lt;&lt; s &lt;&lt; std::endl;
      }
  };
  
  int main()
  {
      Entity e1 = (10, 20);
      Entity e2 = (10, 20, 30);
      Entity e3 = (10, 20, 30, 40);
      Entity e4 = (std::string(&quot;Hello&quot;), std::string(&quot;World&quot;));
      return 0;
  }
  </code></pre>
  <p>The output of the above program is</p>
  <pre><code>20  
  30  
  40  
  World
  </code></pre>
  <p>Can anyone tell me why only the last value (integer, string) passed is printed?</p>
  <p>Note: If the constructor is made <code>explicit</code>, then there will be compilation error. Why this output with <code>implicit</code> constructor?</p>