Почему конструктор копирования вызывается вместо конструктора преобразования?

Так что в основном этот код:

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, который затем используется для построения копии -, но почему? Где это в стандарте?

22
задан Luchian Grigore 27 June 2012 в 08:31
поделиться