Dlaczego konstruktor kopiowania jest wywoływany zamiast konstruktora konwersji?

Więc zasadniczo ten kod:

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
}

generuje tylko błąd dlaB b2 = a. A ten błąd jest

błąd: „B :: B (const B &)” jest prywatny

Dlaczego próbuje wywołać konstruktor kopii oprócz konstruktora konwersji bezpośredniej?

Z komunikatu o błędzie wynika, że ​​jest tymczasowyB jest tworzony, a następnie używany do tworzenia kopii, ale dlaczego? Gdzie to jest w standardzie?

questionAnswers(1)

yourAnswerToTheQuestion