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