// { dg-do run } // Author: Alfred Miniarik // test of dynamic_cast // runtime detecting of nonpublic // inheritance within a cast // and therefor failing with result 0. extern "C" void abort(); extern "C" int printf (const char *, ...); static int errors = 0; void error(int i) { printf("Error %i\n",i); errors++; } struct A {virtual ~A(){}}; struct B : private virtual A {}; struct C : virtual A {}; struct D : B, C {}; int main() { D d; A* ap= &d; if(&d != dynamic_cast(ap)) error(1); if((B*)&d != dynamic_cast(ap)) error(2); if((C*)&d != dynamic_cast(ap)) error(3); return errors ? 1 : 0; }