したがって、基本的にこのコードは次のとおりです。
class A {
};
class B {
B (const B& b) {}
public:
B (){}
B (const A& a) {}
};
int main()
{
A a;
B b1(a); //OK
B b2 = a; //Error
}
のエラーのみを生成しますB b2 = a
。そして、そのエラーは
エラー:'B :: B(const B&)'はプライベートです
直接変換コンストラクターに加えてコピーコンストラクターを呼び出そうとするのはなぜですか?
エラーメッセージから、B
コピー構築に使用される一時的なものが作成されていることは明らかですが、なぜですか?これは標準のどこにありますか?