Несколько неявных преобразований для пользовательских типов не допускается?
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
? Каково общее правило, описывающее многошаговое неявное преобразование?