title: Why do these two constructors together not produce an ambiguity error?
body: <p>Consider the following:</p>
  
  <pre><code>class A
  {
  private:
      A() {}
  public:
      A(int x = 0) {}
  };
  
  
  int main()
  {
      A a(1);
      return 0;
  }
  </code></pre>
  
  <p>I have two constructors, one is a default and the other one is converting constructor with a default argument. When I try to compile the code, I expected an ambiguity error, but the compiler doesn't produce one.</p>
  
  <p>Even when I don't create an instance of <code>A</code>, it doesn't produce an ambiguity error either.</p>
  
  <pre><code>int main()
  {
      return 0;
  }
  </code></pre>
  
  <p>Why is that?</p>