// { dg-do run }
// { dg-options "-fexceptions" }
#include <typeinfo>
#include <stdexcept>
class A {
public:
virtual void j () {}
};
class B : public A { };
void x (A& a) {
// These should all work.
const B& b2 = dynamic_cast<B&>(a);
const B& b3 = dynamic_cast<const B&>((const A&)a);
const B& b4 = dynamic_cast<const B&>(a);
}
int main() {
try {
B b;
x (b);
} catch (std::exception& e) {
// If we get a bad_cast, it is wrong.
return 1;
}
}