summaryrefslogtreecommitdiff
path: root/libcxxabi/test/dynamic_cast3.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libcxxabi/test/dynamic_cast3.cpp')
-rw-r--r--libcxxabi/test/dynamic_cast3.cpp2461
1 files changed, 0 insertions, 2461 deletions
diff --git a/libcxxabi/test/dynamic_cast3.cpp b/libcxxabi/test/dynamic_cast3.cpp
deleted file mode 100644
index b515d3c0cea8..000000000000
--- a/libcxxabi/test/dynamic_cast3.cpp
+++ /dev/null
@@ -1,2461 +0,0 @@
-//===------------------------- dynamic_cast3.cpp --------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include <cassert>
-
-/*
-
-A1 A2 A3
-
-*/
-
-namespace t1
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
-{
- char _[34981];
- virtual ~A2() {}
-
- A2* getA2() {return this;}
-};
-
-struct A3
-{
- char _[93481];
- virtual ~A3() {}
-
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == 0);
- assert(dynamic_cast<A1*>(a3.getA3()) == 0);
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == 0);
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t1
-
-/*
-
-A1 A2
-|
-A3
-
-*/
-
-namespace t2
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
-{
- char _[34981];
- virtual ~A2() {}
-
- A2* getA2() {return this;}
-};
-
-struct A3
- : public A1
-{
- char _[93481];
- virtual ~A3() {}
-
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == 0);
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA3()) == 0);
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t2
-
-namespace t3
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
-{
- char _[34981];
- virtual ~A2() {}
-
- A2* getA2() {return this;}
-};
-
-struct A3
- : public virtual A1
-{
- char _[93481];
- virtual ~A3() {}
-
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == 0);
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA3()) == 0);
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t3
-
-namespace t4
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
-{
- char _[34981];
- virtual ~A2() {}
-
- A2* getA2() {return this;}
-};
-
-struct A3
- : private A1
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == 0);
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA3()) == 0);
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t4
-
-namespace t5
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
-{
- char _[34981];
- virtual ~A2() {}
-
- A2* getA2() {return this;}
-};
-
-struct A3
- : private virtual A1
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == 0);
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA3()) == 0);
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t5
-
-/*
-
-A1 A2
- \ /
- A3
-
-*/
-
-namespace t6
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
-{
- char _[34981];
- virtual ~A2() {}
-
- A2* getA2() {return this;}
-};
-
-struct A3
- : public A1,
- public A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == 0);
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t6
-
-namespace t7
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
-{
- char _[34981];
- virtual ~A2() {}
-
- A2* getA2() {return this;}
-};
-
-struct A3
- : public virtual A1,
- public A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == 0);
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t7
-
-namespace t8
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
-{
- char _[34981];
- virtual ~A2() {}
-
- A2* getA2() {return this;}
-};
-
-struct A3
- : private A1,
- public A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == 0);
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == 0);
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t8
-
-namespace t9
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
-{
- char _[34981];
- virtual ~A2() {}
-
- A2* getA2() {return this;}
-};
-
-struct A3
- : private virtual A1,
- public A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == 0);
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == 0);
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t9
-
-namespace t10
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
-{
- char _[34981];
- virtual ~A2() {}
-
- A2* getA2() {return this;}
-};
-
-struct A3
- : public virtual A1,
- public virtual A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == 0);
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t10
-
-namespace t11
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
-{
- char _[34981];
- virtual ~A2() {}
-
- A2* getA2() {return this;}
-};
-
-struct A3
- : private A1,
- public virtual A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == 0);
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == 0);
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t11
-
-namespace t12
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
-{
- char _[34981];
- virtual ~A2() {}
-
- A2* getA2() {return this;}
-};
-
-struct A3
- : private virtual A1,
- public virtual A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == 0);
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == 0);
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t12
-
-namespace t13
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
-{
- char _[34981];
- virtual ~A2() {}
-
- A2* getA2() {return this;}
-};
-
-struct A3
- : private A1,
- private A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == 0);
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == 0);
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t13
-
-namespace t14
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
-{
- char _[34981];
- virtual ~A2() {}
-
- A2* getA2() {return this;}
-};
-
-struct A3
- : private virtual A1,
- private A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == 0);
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == 0);
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t14
-
-namespace t15
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
-{
- char _[34981];
- virtual ~A2() {}
-
- A2* getA2() {return this;}
-};
-
-struct A3
- : private virtual A1,
- private virtual A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == 0);
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == 0);
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t15
-
-/*
-
-A1
-|
-A2
-|
-A3
-
-*/
-
-namespace t16
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : public A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : public A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == a2.getA2());
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t16
-
-namespace t17
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : public virtual A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : public A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == a2.getA2());
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t17
-
-namespace t18
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : private A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : public A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t18
-
-namespace t19
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : private virtual A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : public A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t19
-
-namespace t20
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : public virtual A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : public virtual A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == a2.getA2());
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t20
-
-namespace t21
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : private A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : public virtual A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t21
-
-namespace t22
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : private virtual A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : public virtual A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t22
-
-namespace t23
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : private A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : private A2
-{
- char _[93481];
- virtual ~A3() {}
-
- t23::A1* getA1() {return A2::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t23
-
-namespace t24
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : private virtual A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : private A2
-{
- char _[93481];
- virtual ~A3() {}
-
- t24::A1* getA1() {return A2::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t24
-
-namespace t25
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : private virtual A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : private virtual A2
-{
- char _[93481];
- virtual ~A3() {}
-
- t25::A1* getA1() {return A2::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t25
-
-/*
-
-A1 A1
-| |
-A2 |
- \ |
- A3
-
-*/
-
-namespace t26
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : public A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : public A1,
- public A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA12() {return A2::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA12()) == a3.getA12());
- assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA12());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == a2.getA2());
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA12()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA12()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t26
-
-namespace t27
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : private A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : public A1,
- public A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA12() {return A2::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA12()) == a3.getA12());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA12()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA12()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t27
-
-namespace t28
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : public A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : private A1,
- public A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA12() {return A2::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA12());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == a2.getA2());
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA12()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA12()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t28
-
-namespace t29
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : public A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : public A1,
- private A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA12() {return A2::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA12());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == a2.getA2());
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA12()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA12()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t29
-
-namespace t30
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : public A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : private A1,
- private A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA12() {return A2::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA12()) == a3.getA12());
- assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA12());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == a2.getA2());
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA12()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA12()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t30
-
-namespace t31
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : private A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : public A1,
- private A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA12() {return A2::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA12()) == a3.getA12());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA12()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA12()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t31
-
-namespace t32
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : private A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : private A1,
- public A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA12() {return A2::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA12()) == a3.getA12());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA12()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA12()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t32
-
-namespace t33
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : private A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : private A1,
- private A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA12() {return A2::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA12()) == a3.getA12());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA12()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA12()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t33
-
-/*
-
-A1
-| \
-A2 \
- \ |
- A3
-
-*/
-
-namespace t34
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : public virtual A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : public virtual A1,
- public A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return A1::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == a2.getA2());
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t34
-
-namespace t35
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : private virtual A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : public virtual A1,
- public A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return A1::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t35
-
-namespace t36
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : public virtual A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : private virtual A1,
- public A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return A1::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == a2.getA2());
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t36
-
-namespace t37
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : public virtual A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : public virtual A1,
- private A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return A1::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == a2.getA2());
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t37
-
-namespace t38
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : public virtual A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : private virtual A1,
- private A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return A1::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a2.getA2()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == a2.getA2());
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t38
-
-namespace t39
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : private virtual A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : public virtual A1,
- private A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return A1::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
- assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t39
-
-namespace t40
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : private virtual A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : private virtual A1,
- public A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return A1::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
- assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t40
-
-namespace t41
-{
-
-struct A1
-{
- char _[43981];
- virtual ~A1() {}
-
- A1* getA1() {return this;}
-};
-
-struct A2
- : private virtual A1
-{
- char _[34981];
- virtual ~A2() {}
-
- A1* getA1() {return this;}
- A2* getA2() {return this;}
-};
-
-struct A3
- : private virtual A1,
- private A2
-{
- char _[93481];
- virtual ~A3() {}
-
- A1* getA1() {return A1::getA1();}
- A2* getA2() {return this;}
- A3* getA3() {return this;}
-};
-
-void test()
-{
- A1 a1;
- A2 a2;
- A3 a3;
- assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1());
- assert(dynamic_cast<A1*>(a2.getA1()) == a2.getA1());
- assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1());
-
- assert(dynamic_cast<A2*>(a1.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA1()) == 0);
- assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2());
- assert(dynamic_cast<A2*>(a3.getA1()) == 0);
- assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2());
-
- assert(dynamic_cast<A3*>(a1.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA1()) == 0);
- assert(dynamic_cast<A3*>(a2.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA1()) == 0);
- assert(dynamic_cast<A3*>(a3.getA2()) == 0);
- assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3());
-}
-
-} // t41
-
-#include <chrono>
-#include <iostream>
-
-int main()
-{
- typedef std::chrono::high_resolution_clock Clock;
- typedef Clock::time_point time_point;
- typedef std::chrono::duration<double, std::micro> NS;
- time_point t0 = Clock::now();
- t1::test();
- t2::test();
- t3::test();
- t4::test();
- t5::test();
- t6::test();
- t7::test();
- t8::test();
- t9::test();
- t10::test();
- t11::test();
- t12::test();
- t13::test();
- t14::test();
- t15::test();
- t16::test();
- t17::test();
- t18::test();
- t19::test();
- t20::test();
- t21::test();
- t22::test();
- t23::test();
- t24::test();
- t25::test();
- t26::test();
- t27::test();
- t28::test();
- t29::test();
- t30::test();
- t31::test();
- t32::test();
- t33::test();
- t34::test();
- t35::test();
- t36::test();
- t37::test();
- t38::test();
- t39::test();
- t40::test();
- t41::test();
- time_point t1 = Clock::now();
- std::cout << NS(t1-t0).count() << " microseconds\n";
-}