Так что в основном этот код:
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
. И эта ошибка
error: ‘B::B(const B&)’ is private
Почему он пытается вызвать конструктор копирования в дополнение к конструктору прямого преобразования?
Из сообщения об ошибке ясно, что создается временный B
, который затем используется для построения копии -, но почему? Где это в стандарте?