Почему эти два конструктора вместе не дают ошибку двусмысленности?

Рассмотрим следующее:

class A
{
private:
    A() {}
public:
    A(int x = 0) {}
};


int main()
{
    A a(1);
    return 0;
}

У меня есть два конструктора, по умолчанию, а другой - конвертирующий конструктор с аргументом по умолчанию. Когда я пытаюсь компилировать код, я ожидал ошибку двусмысленности, но компилятор не производит один.

Даже если я не создаю экземпляр A , он также не вызывает ошибку двусмысленности.

int main()
{
    return 0;
}

Почему это?

7
задан In silico 1 September 2011 в 07:01
поделиться