Должно ли static_cast <Derived *> (базовый указатель) выдавать ошибку времени компиляции?

Должен ли static_cast (базовый указатель) давать ошибку времени компиляции?

class A
{
public:
    A()
    {

    }
};

class B : public  A
{
 public:
     B()
     {
     }
};

int main()
{
    A *a=new A();
    B * b=static_cast<B*>(a);   // Compile Error?
}

Ответы на вопрос(2)

Ваш ответ на вопрос