Conversão de construtor implícito múltiplo

A conversão implícita do construtor parece funcionar apenas com uma única conversão.

class A {
public:
    A(std::string s) {}
};
class B {
public:
    B(A a) { }
};

Com o código acima, executando

B b{std::string("Hey")};

funciona bem.

Por outro lado,

B b{"Hey"};

não.

A conversão de construtores realmente funciona apenas com uma única conversão e por que isso ocorre? Para evitar uma possível ambigüidade quando diferentes construtores são fornecidos?

questionAnswers(2)

yourAnswerToTheQuestion