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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta