Niedozwolone jest wiele niejawnych konwersji na niestandardowych typach?

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
}

Dlaczego mogę użyć dwustopniowej niejawnej konwersji zbool ale nie mogę go używaćC? Jaka jest ogólna zasada opisująca wieloetapową konwersję ukrytą?

questionAnswers(2)

yourAnswerToTheQuestion