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?