Compiler projects using llvm
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);
}