暗黙的なコンストラクターの変換は、単一の変換でのみ機能するようです。
class A {
public:
A(std::string s) {}
};
class B {
public:
B(A a) { }
};
上記のコードで、実行中
B b{std::string("Hey")};
正常に動作します。
一方で、
B b{"Hey"};
ではない。
コンストラクターの変換は実際には単一の変換でのみ機能しますか?なぜそうなるのでしょうか? 異なるコンストラクターが提供されている場合に発生する可能性のあるあいまいさを回避するには?