diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.jason/dcast3.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.jason/dcast3.C | 33 |
1 files changed, 1 insertions, 32 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/dcast3.C b/gcc/testsuite/g++.old-deja/g++.jason/dcast3.C index 1dc00a138eb..fca7aa3a92f 100644 --- a/gcc/testsuite/g++.old-deja/g++.jason/dcast3.C +++ b/gcc/testsuite/g++.old-deja/g++.jason/dcast3.C @@ -1,32 +1 @@ -// Testcase for tricky dynamic cast situations. - -struct A { - virtual void f () { } -}; - -struct B : public A { }; -struct C : public B { }; -struct D : public B { }; -struct E : public C, public D { }; - -struct B2 : public virtual A { }; -struct C2 : public B2 { }; -struct D2 : public B2 { }; -struct E2 : public C2, public D2 { }; - -main () -{ - E e; - E2 e2; - - A* ap = (C*)&e; - - // ap points to base subobject of unique B; succeeds - if (dynamic_cast <B*> (ap) == 0) - return 1; - - ap = (C2*)&e2; - // ap points to base subobject shared by two Bs; fails - if (dynamic_cast <B2*> (ap) != 0) - return 1; -} +int main () |