У меня два класса:
struct B {};
struct D {
operator B& ();
};
Когда я делаю;
b = d; // B b; ... D d;
Результат соответствует ожиданиям, где вызывается D :: operator B & ()
( Демо ).
Если D
изменить на,
struct D : B {
operator B& ();
};
, то D :: оператор B & ()
не вызывается ( Демо ). B :: B (const B &)
находит лучшего кандидата в D
, а затем D :: operator B & ()
?