なぜこれがコンパイルされないのか誰か教えてもらえますか?
struct A { };
struct B : public A { };
int main()
{
B b;
A* a = &b;
B* &b1 = static_cast<B*&>(a);
return 0;
}
ここで、静的キャストを次のように置き換えると、
B* b1 = static_cast<B*>(a);
その後、コンパイルします。
編集:コンパイラが独立した型として扱い、そうでない場合はこれが機能するA*
ことは明らかです。B*
問題は、なぜそれが望ましいのかということです。