Conversión de constructor implícita múltiple
La conversión implícita del constructor solo parece funcionar con una sola conversión.
class A {
public:
A(std::string s) {}
};
class B {
public:
B(A a) { }
};
Con el código anterior, ejecutando
B b{std::string("Hey")};
funciona bien.
Por otra parte,
B b{"Hey"};
no.
¿La conversión de constructor realmente solo funciona con una sola conversión, y por qué es así? ¿Para evitar posibles ambigüedades cuando se proporcionan diferentes constructores?