C ++ não pode converter da base A para o tipo B derivado via base virtual A

Eu tenho três classes:

class A {};

class B : virtual public A {};
class C : virtual public A {};

class D: public B, public C {};

Tentando uma conversão estática de A * para B *, recebo o erro abaixo:

cannot convert from base A to derived type B via virtual base A

questionAnswers(7)

yourAnswerToTheQuestion