struct A {
virtual ~A() {}
};
struct B : public A {};
void f() {
const A *b = new B();
const B *c1 = dynamic_cast<const B *>(b);
const B *c2 = static_cast<const B *>(b);
const B *c3 = reinterpret_cast<const B *>(b);
A *c4 = const_cast<A *>(b);
}