Несколько неявных преобразований для пользовательских типов не допускается?

class C {
public:
    C() { }
};

class B {
public:
    B(C c) { }
    B() { }
};

class A {
public:
    A(bool b) { }
    A(B b) { }
};

int main() {
    A a1 = true; // bool -> A        is allowed
    A a2 = B();  // B -> A           is allowed

    A a3 = 7;    // int -> bool -> A is allowed
    A a4 = C();  // C -> B -> A      isn't allowed
}

Почему я могу использовать двухступенчатое неявное преобразование сbool но может'не использовать его сC? Каково общее правило, описывающее многошаговое неявное преобразование?

Ответы на вопрос(2)

Ваш ответ на вопрос