diff options
Diffstat (limited to 'trunk/test/dynamic_cast14.cpp')
-rw-r--r-- | trunk/test/dynamic_cast14.cpp | 2189 |
1 files changed, 2189 insertions, 0 deletions
diff --git a/trunk/test/dynamic_cast14.cpp b/trunk/test/dynamic_cast14.cpp new file mode 100644 index 0000000..2145fb4 --- /dev/null +++ b/trunk/test/dynamic_cast14.cpp @@ -0,0 +1,2189 @@ +//===------------------------- dynamic_cast14.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> + +namespace t1 +{ + +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 virtual A2 +{ + char _[93481]; + virtual ~A3() {} + + A1* getA1_3() {return A1::getA1();} + A2* getA2() {return A2::getA2();} + A3* getA3() {return this;} +}; + +struct A4 + : public virtual A2, + public A1 +{ + char _[13489]; + virtual ~A4() {} + + A1* getA1_4() {return A1::getA1();} + A2* getA2() {return A2::getA2();} + A4* getA4() {return this;} +}; + +struct A5 + : public A3, + public A4 +{ + char _[13489]; + virtual ~A5() {} + + A1* getA1_3() {return A3::getA1();} + A1* getA1_4() {return A4::getA1();} + A2* getA2() {return A3::getA2();} + A3* getA3() {return A3::getA3();} + A4* getA4() {return A4::getA4();} + A5* getA5() {return this;} +}; + +struct A6 + : public A1 +{ + char _[81349]; + virtual ~A6() {} + + A1* getA1_6() {return A1::getA1();} + A6* getA6() {return this;} +}; + +struct A7 + : public A5, + public A6 +{ + char _[34819]; + virtual ~A7() {} + + A1* getA1_3() {return A5::getA1_3();} + A1* getA1_4() {return A5::getA1_4();} + A1* getA1_6() {return A6::getA1_6();} + A2* getA2() {return A5::getA2();} + A3* getA3() {return A5::getA3();} + A4* getA4() {return A5::getA4();} + A5* getA5() {return A5::getA5();} + A6* getA6() {return A6::getA6();} + A7* getA7() {return this;} +}; + +struct A8 + : public A7 +{ + char _[3489]; + virtual ~A8() {} + + A1* getA1_3() {return A7::getA1_3();} + A1* getA1_4() {return A7::getA1_4();} + A1* getA1_6() {return A7::getA1_6();} + A2* getA2() {return A7::getA2();} + A3* getA3() {return A7::getA3();} + A4* getA4() {return A7::getA4();} + A5* getA5() {return A7::getA5();} + A6* getA6() {return A7::getA6();} + A7* getA7() {return A7::getA7();} + A8* getA8() {return this;} +}; + +struct A9 + : public A1 +{ + char _[3481]; + virtual ~A9() {} + + A1* getA1_9() {return A1::getA1();} + A9* getA9() {return this;} +}; + +struct A10 + : public virtual A8 +{ + char _[4831]; + virtual ~A10() {} + + A1* getA1_3() {return A8::getA1_3();} + A1* getA1_4() {return A8::getA1_4();} + A1* getA1_6() {return A8::getA1_6();} + A2* getA2() {return A8::getA2();} + A3* getA3() {return A8::getA3();} + A4* getA4() {return A8::getA4();} + A5* getA5() {return A8::getA5();} + A6* getA6() {return A8::getA6();} + A7* getA7() {return A8::getA7();} + A8* getA8() {return A8::getA8();} + A10* getA10() {return this;} +}; + +struct A11 + : public virtual A8, + public A9 +{ + char _[6483]; + virtual ~A11() {} + + A1* getA1_3() {return A8::getA1_3();} + A1* getA1_4() {return A8::getA1_4();} + A1* getA1_6() {return A8::getA1_6();} + A1* getA1_9() {return A9::getA1_9();} + A2* getA2() {return A8::getA2();} + A3* getA3() {return A8::getA3();} + A4* getA4() {return A8::getA4();} + A5* getA5() {return A8::getA5();} + A6* getA6() {return A8::getA6();} + A7* getA7() {return A8::getA7();} + A8* getA8() {return A8::getA8();} + A9* getA9() {return A9::getA9();} + A11* getA11() {return this;} +}; + +struct A12 + : public A10, + public A11 +{ + char _[2283]; + virtual ~A12() {} + + A1* getA1_3() {return A10::getA1_3();} + A1* getA1_4() {return A10::getA1_4();} + A1* getA1_6() {return A10::getA1_6();} + A1* getA1_9() {return A11::getA1_9();} + A2* getA2() {return A10::getA2();} + A3* getA3() {return A10::getA3();} + A4* getA4() {return A10::getA4();} + A5* getA5() {return A10::getA5();} + A6* getA6() {return A10::getA6();} + A7* getA7() {return A10::getA7();} + A8* getA8() {return A10::getA8();} + A9* getA9() {return A11::getA9();} + A10* getA10() {return A10::getA10();} + A11* getA11() {return A11::getA11();} + A12* getA12() {return this;} +}; + +struct A13 + : public A12 +{ + char _[1283]; + virtual ~A13() {} + + A1* getA1_3() {return A12::getA1_3();} + A1* getA1_4() {return A12::getA1_4();} + A1* getA1_6() {return A12::getA1_6();} + A1* getA1_9() {return A12::getA1_9();} + A2* getA2() {return A12::getA2();} + A3* getA3() {return A12::getA3();} + A4* getA4() {return A12::getA4();} + A5* getA5() {return A12::getA5();} + A6* getA6() {return A12::getA6();} + A7* getA7() {return A12::getA7();} + A8* getA8() {return A12::getA8();} + A9* getA9() {return A12::getA9();} + A10* getA10() {return A12::getA10();} + A11* getA11() {return A12::getA11();} + A12* getA12() {return A12::getA12();} + A13* getA13() {return this;} +}; + +void test() +{ + A3 a3; + A4 a4; + A5 a5; + A6 a6; + A7 a7; + A8 a8; + A9 a9; + A10 a10; + A11 a11; + A12 a12; + A13 a13; + + assert(dynamic_cast<A3*>(a3.getA1_3()) == a3.getA3()); + assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3()); + + assert(dynamic_cast<A3*>(a4.getA1_4()) == 0); + assert(dynamic_cast<A3*>(a4.getA2()) == 0); + assert(dynamic_cast<A4*>(a4.getA1_4()) == a4.getA4()); + assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4()); + + assert(dynamic_cast<A3*>(a5.getA1_3()) == a5.getA3()); + assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3()); + + assert(dynamic_cast<A4*>(a5.getA1_3()) == a5.getA4()); + assert(dynamic_cast<A4*>(a5.getA1_4()) == a5.getA4()); + assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4()); + assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4()); + + assert(dynamic_cast<A5*>(a5.getA1_3()) == a5.getA5()); + assert(dynamic_cast<A5*>(a5.getA1_4()) == a5.getA5()); + assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5()); + assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5()); + assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5()); + assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5()); + + assert(dynamic_cast<A3*>(a6.getA1_6()) == 0); + + assert(dynamic_cast<A4*>(a6.getA1_6()) == 0); + + assert(dynamic_cast<A5*>(a6.getA1_6()) == 0); + + assert(dynamic_cast<A6*>(a6.getA1_6()) == a6.getA6()); + + assert(dynamic_cast<A3*>(a7.getA1_3()) == a7.getA3()); + assert(dynamic_cast<A3*>(a7.getA1_4()) == a7.getA3()); + assert(dynamic_cast<A3*>(a7.getA2()) == a7.getA3()); + + assert(dynamic_cast<A4*>(a7.getA1_3()) == a7.getA4()); + assert(dynamic_cast<A4*>(a7.getA1_4()) == a7.getA4()); + assert(dynamic_cast<A4*>(a7.getA2()) == a7.getA4()); + assert(dynamic_cast<A4*>(a7.getA3()) == a7.getA4()); + + assert(dynamic_cast<A5*>(a7.getA1_3()) == a7.getA5()); + assert(dynamic_cast<A5*>(a7.getA1_4()) == a7.getA5()); + assert(dynamic_cast<A5*>(a7.getA2()) == a7.getA5()); + assert(dynamic_cast<A5*>(a7.getA3()) == a7.getA5()); + assert(dynamic_cast<A5*>(a7.getA4()) == a7.getA5()); + + assert(dynamic_cast<A6*>(a7.getA1_3()) == a7.getA6()); + assert(dynamic_cast<A6*>(a7.getA1_4()) == a7.getA6()); + assert(dynamic_cast<A6*>(a7.getA1_6()) == a7.getA6()); + assert(dynamic_cast<A6*>(a7.getA2()) == a7.getA6()); + assert(dynamic_cast<A6*>(a7.getA3()) == a7.getA6()); + assert(dynamic_cast<A6*>(a7.getA4()) == a7.getA6()); + assert(dynamic_cast<A6*>(a7.getA5()) == a7.getA6()); + + assert(dynamic_cast<A7*>(a7.getA1_3()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA1_4()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA1_6()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA2()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA3()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA4()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA5()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA6()) == a7.getA7()); + + assert(dynamic_cast<A3*>(a8.getA1_3()) == a8.getA3()); + assert(dynamic_cast<A3*>(a8.getA1_4()) == a8.getA3()); + assert(dynamic_cast<A3*>(a8.getA2()) == a8.getA3()); + + assert(dynamic_cast<A4*>(a8.getA1_3()) == a8.getA4()); + assert(dynamic_cast<A4*>(a8.getA1_4()) == a8.getA4()); + assert(dynamic_cast<A4*>(a8.getA2()) == a8.getA4()); + assert(dynamic_cast<A4*>(a8.getA3()) == a8.getA4()); + + assert(dynamic_cast<A5*>(a8.getA1_3()) == a8.getA5()); + assert(dynamic_cast<A5*>(a8.getA1_4()) == a8.getA5()); + assert(dynamic_cast<A5*>(a8.getA2()) == a8.getA5()); + assert(dynamic_cast<A5*>(a8.getA3()) == a8.getA5()); + assert(dynamic_cast<A5*>(a8.getA4()) == a8.getA5()); + + assert(dynamic_cast<A6*>(a8.getA1_3()) == a8.getA6()); + assert(dynamic_cast<A6*>(a8.getA1_4()) == a8.getA6()); + assert(dynamic_cast<A6*>(a8.getA1_6()) == a8.getA6()); + assert(dynamic_cast<A6*>(a8.getA2()) == a8.getA6()); + assert(dynamic_cast<A6*>(a8.getA3()) == a8.getA6()); + assert(dynamic_cast<A6*>(a8.getA4()) == a8.getA6()); + assert(dynamic_cast<A6*>(a8.getA5()) == a8.getA6()); + + assert(dynamic_cast<A7*>(a8.getA1_3()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA1_4()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA1_6()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA2()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA3()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA4()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA5()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA6()) == a8.getA7()); + + assert(dynamic_cast<A8*>(a8.getA1_3()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA1_4()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA1_6()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA2()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA3()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA4()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA5()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA6()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA7()) == a8.getA8()); + + assert(dynamic_cast<A3*>(a9.getA1_9()) == 0); + + assert(dynamic_cast<A4*>(a9.getA1_9()) == 0); + + assert(dynamic_cast<A5*>(a9.getA1_9()) == 0); + + assert(dynamic_cast<A6*>(a9.getA1_9()) == 0); + + assert(dynamic_cast<A7*>(a9.getA1_9()) == 0); + + assert(dynamic_cast<A8*>(a9.getA1_9()) == 0); + + assert(dynamic_cast<A9*>(a9.getA1_9()) == a9.getA9()); + + assert(dynamic_cast<A3*>(a10.getA1_3()) == a10.getA3()); + assert(dynamic_cast<A3*>(a10.getA1_4()) == a10.getA3()); + assert(dynamic_cast<A3*>(a10.getA1_6()) == a10.getA3()); + assert(dynamic_cast<A3*>(a10.getA2()) == a10.getA3()); + + assert(dynamic_cast<A4*>(a10.getA1_3()) == a10.getA4()); + assert(dynamic_cast<A4*>(a10.getA1_4()) == a10.getA4()); + assert(dynamic_cast<A4*>(a10.getA1_6()) == a10.getA4()); + assert(dynamic_cast<A4*>(a10.getA2()) == a10.getA4()); + assert(dynamic_cast<A4*>(a10.getA3()) == a10.getA4()); + + assert(dynamic_cast<A5*>(a10.getA1_3()) == a10.getA5()); + assert(dynamic_cast<A5*>(a10.getA1_4()) == a10.getA5()); + assert(dynamic_cast<A5*>(a10.getA1_6()) == a10.getA5()); + assert(dynamic_cast<A5*>(a10.getA2()) == a10.getA5()); + assert(dynamic_cast<A5*>(a10.getA3()) == a10.getA5()); + assert(dynamic_cast<A5*>(a10.getA4()) == a10.getA5()); + + assert(dynamic_cast<A6*>(a10.getA1_3()) == a10.getA6()); + assert(dynamic_cast<A6*>(a10.getA1_4()) == a10.getA6()); + assert(dynamic_cast<A6*>(a10.getA1_6()) == a10.getA6()); + assert(dynamic_cast<A6*>(a10.getA2()) == a10.getA6()); + assert(dynamic_cast<A6*>(a10.getA3()) == a10.getA6()); + assert(dynamic_cast<A6*>(a10.getA4()) == a10.getA6()); + assert(dynamic_cast<A6*>(a10.getA5()) == a10.getA6()); + + assert(dynamic_cast<A7*>(a10.getA1_3()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA1_4()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA1_6()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA2()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA3()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA4()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA5()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA6()) == a10.getA7()); + + assert(dynamic_cast<A8*>(a10.getA1_3()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA1_4()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA1_6()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA2()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA3()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA4()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA5()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA6()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA7()) == a10.getA8()); + + assert(dynamic_cast<A9*>(a10.getA1_3()) == 0); + assert(dynamic_cast<A9*>(a10.getA1_4()) == 0); + assert(dynamic_cast<A9*>(a10.getA1_6()) == 0); + assert(dynamic_cast<A9*>(a10.getA2()) == 0); + assert(dynamic_cast<A9*>(a10.getA3()) == 0); + assert(dynamic_cast<A9*>(a10.getA4()) == 0); + assert(dynamic_cast<A9*>(a10.getA5()) == 0); + assert(dynamic_cast<A9*>(a10.getA6()) == 0); + assert(dynamic_cast<A9*>(a10.getA7()) == 0); + assert(dynamic_cast<A9*>(a10.getA8()) == 0); + + assert(dynamic_cast<A10*>(a10.getA1_3()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA1_4()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA1_6()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA2()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA3()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA4()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA5()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA6()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA7()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA8()) == a10.getA10()); + + assert(dynamic_cast<A3*>(a11.getA1_3()) == a11.getA3()); + assert(dynamic_cast<A3*>(a11.getA1_4()) == a11.getA3()); + assert(dynamic_cast<A3*>(a11.getA1_6()) == a11.getA3()); + assert(dynamic_cast<A3*>(a11.getA1_9()) == a11.getA3()); + assert(dynamic_cast<A3*>(a11.getA2()) == a11.getA3()); + + assert(dynamic_cast<A4*>(a11.getA1_3()) == a11.getA4()); + assert(dynamic_cast<A4*>(a11.getA1_4()) == a11.getA4()); + assert(dynamic_cast<A4*>(a11.getA1_6()) == a11.getA4()); + assert(dynamic_cast<A4*>(a11.getA1_9()) == a11.getA4()); + assert(dynamic_cast<A4*>(a11.getA2()) == a11.getA4()); + assert(dynamic_cast<A4*>(a11.getA3()) == a11.getA4()); + + assert(dynamic_cast<A5*>(a11.getA1_3()) == a11.getA5()); + assert(dynamic_cast<A5*>(a11.getA1_4()) == a11.getA5()); + assert(dynamic_cast<A5*>(a11.getA1_6()) == a11.getA5()); + assert(dynamic_cast<A5*>(a11.getA1_9()) == a11.getA5()); + assert(dynamic_cast<A5*>(a11.getA2()) == a11.getA5()); + assert(dynamic_cast<A5*>(a11.getA3()) == a11.getA5()); + assert(dynamic_cast<A5*>(a11.getA4()) == a11.getA5()); + + assert(dynamic_cast<A6*>(a11.getA1_3()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA1_4()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA1_6()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA1_9()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA2()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA3()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA4()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA5()) == a11.getA6()); + + assert(dynamic_cast<A7*>(a11.getA1_3()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA1_4()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA1_6()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA1_9()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA2()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA3()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA4()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA5()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA6()) == a11.getA7()); + + assert(dynamic_cast<A8*>(a11.getA1_3()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA1_4()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA1_6()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA1_9()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA2()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA3()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA4()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA5()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA6()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA7()) == a11.getA8()); + + assert(dynamic_cast<A9*>(a11.getA1_3()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA1_4()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA1_6()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA1_9()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA2()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA3()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA4()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA5()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA6()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA7()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA8()) == a11.getA9()); + + assert(dynamic_cast<A10*>(a11.getA1_3()) == 0); + assert(dynamic_cast<A10*>(a11.getA1_4()) == 0); + assert(dynamic_cast<A10*>(a11.getA1_6()) == 0); + assert(dynamic_cast<A10*>(a11.getA1_9()) == 0); + assert(dynamic_cast<A10*>(a11.getA2()) == 0); + assert(dynamic_cast<A10*>(a11.getA3()) == 0); + assert(dynamic_cast<A10*>(a11.getA4()) == 0); + assert(dynamic_cast<A10*>(a11.getA5()) == 0); + assert(dynamic_cast<A10*>(a11.getA6()) == 0); + assert(dynamic_cast<A10*>(a11.getA7()) == 0); + assert(dynamic_cast<A10*>(a11.getA8()) == 0); + assert(dynamic_cast<A10*>(a11.getA9()) == 0); + + assert(dynamic_cast<A11*>(a11.getA1_3()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA1_4()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA1_6()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA1_9()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA2()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA3()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA4()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA5()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA6()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA7()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA8()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA9()) == a11.getA11()); + + assert(dynamic_cast<A3*>(a12.getA1_3()) == a12.getA3()); + assert(dynamic_cast<A3*>(a12.getA1_4()) == a12.getA3()); + assert(dynamic_cast<A3*>(a12.getA1_6()) == a12.getA3()); + assert(dynamic_cast<A3*>(a12.getA1_9()) == a12.getA3()); + assert(dynamic_cast<A3*>(a12.getA2()) == a12.getA3()); + + assert(dynamic_cast<A4*>(a12.getA1_3()) == a12.getA4()); + assert(dynamic_cast<A4*>(a12.getA1_4()) == a12.getA4()); + assert(dynamic_cast<A4*>(a12.getA1_6()) == a12.getA4()); + assert(dynamic_cast<A4*>(a12.getA1_9()) == a12.getA4()); + assert(dynamic_cast<A4*>(a12.getA2()) == a12.getA4()); + assert(dynamic_cast<A4*>(a12.getA3()) == a12.getA4()); + + assert(dynamic_cast<A5*>(a12.getA1_3()) == a12.getA5()); + assert(dynamic_cast<A5*>(a12.getA1_4()) == a12.getA5()); + assert(dynamic_cast<A5*>(a12.getA1_6()) == a12.getA5()); + assert(dynamic_cast<A5*>(a12.getA1_9()) == a12.getA5()); + assert(dynamic_cast<A5*>(a12.getA2()) == a12.getA5()); + assert(dynamic_cast<A5*>(a12.getA3()) == a12.getA5()); + assert(dynamic_cast<A5*>(a12.getA4()) == a12.getA5()); + + assert(dynamic_cast<A6*>(a12.getA1_3()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA1_4()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA1_6()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA1_9()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA2()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA3()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA4()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA5()) == a12.getA6()); + + assert(dynamic_cast<A7*>(a12.getA1_3()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA1_4()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA1_6()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA1_9()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA2()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA3()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA4()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA5()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA6()) == a12.getA7()); + + assert(dynamic_cast<A8*>(a12.getA1_3()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA1_4()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA1_6()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA1_9()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA2()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA3()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA4()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA5()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA6()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA7()) == a12.getA8()); + + assert(dynamic_cast<A9*>(a12.getA1_3()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA1_4()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA1_6()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA1_9()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA2()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA3()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA4()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA5()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA6()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA7()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA8()) == a12.getA9()); + + assert(dynamic_cast<A10*>(a12.getA1_3()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA1_4()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA1_6()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA1_9()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA2()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA3()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA4()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA5()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA6()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA7()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA8()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA9()) == a12.getA10()); + + assert(dynamic_cast<A11*>(a12.getA1_3()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA1_4()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA1_6()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA1_9()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA2()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA3()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA4()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA5()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA6()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA7()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA8()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA9()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA10()) == a12.getA11()); + + assert(dynamic_cast<A12*>(a12.getA1_3()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA1_4()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA1_6()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA1_9()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA2()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA3()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA4()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA5()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA6()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA7()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA8()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA9()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA10()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA11()) == a12.getA12()); + + assert(dynamic_cast<A3*>(a13.getA1_3()) == a13.getA3()); + assert(dynamic_cast<A3*>(a13.getA1_4()) == a13.getA3()); + assert(dynamic_cast<A3*>(a13.getA1_6()) == a13.getA3()); + assert(dynamic_cast<A3*>(a13.getA1_9()) == a13.getA3()); + assert(dynamic_cast<A3*>(a13.getA2()) == a13.getA3()); + + assert(dynamic_cast<A4*>(a13.getA1_3()) == a13.getA4()); + assert(dynamic_cast<A4*>(a13.getA1_4()) == a13.getA4()); + assert(dynamic_cast<A4*>(a13.getA1_6()) == a13.getA4()); + assert(dynamic_cast<A4*>(a13.getA1_9()) == a13.getA4()); + assert(dynamic_cast<A4*>(a13.getA2()) == a13.getA4()); + assert(dynamic_cast<A4*>(a13.getA3()) == a13.getA4()); + + assert(dynamic_cast<A5*>(a13.getA1_3()) == a13.getA5()); + assert(dynamic_cast<A5*>(a13.getA1_4()) == a13.getA5()); + assert(dynamic_cast<A5*>(a13.getA1_6()) == a13.getA5()); + assert(dynamic_cast<A5*>(a13.getA1_9()) == a13.getA5()); + assert(dynamic_cast<A5*>(a13.getA2()) == a13.getA5()); + assert(dynamic_cast<A5*>(a13.getA3()) == a13.getA5()); + assert(dynamic_cast<A5*>(a13.getA4()) == a13.getA5()); + + assert(dynamic_cast<A6*>(a13.getA1_3()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA1_4()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA1_6()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA1_9()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA2()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA3()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA4()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA5()) == a13.getA6()); + + assert(dynamic_cast<A7*>(a13.getA1_3()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA1_4()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA1_6()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA1_9()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA2()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA3()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA4()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA5()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA6()) == a13.getA7()); + + assert(dynamic_cast<A8*>(a13.getA1_3()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA1_4()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA1_6()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA1_9()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA2()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA3()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA4()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA5()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA6()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA7()) == a13.getA8()); + + assert(dynamic_cast<A9*>(a13.getA1_3()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA1_4()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA1_6()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA1_9()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA2()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA3()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA4()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA5()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA6()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA7()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA8()) == a13.getA9()); + + assert(dynamic_cast<A10*>(a13.getA1_3()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA1_4()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA1_6()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA1_9()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA2()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA3()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA4()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA5()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA6()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA7()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA8()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA9()) == a13.getA10()); + + assert(dynamic_cast<A11*>(a13.getA1_3()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA1_4()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA1_6()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA1_9()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA2()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA3()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA4()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA5()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA6()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA7()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA8()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA9()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA10()) == a13.getA11()); + + assert(dynamic_cast<A12*>(a13.getA1_3()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA1_4()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA1_6()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA1_9()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA2()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA3()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA4()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA5()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA6()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA7()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA8()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA9()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA10()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA11()) == a13.getA12()); + + assert(dynamic_cast<A13*>(a13.getA1_3()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA1_4()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA1_6()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA1_9()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA2()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA3()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA4()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA5()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA6()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA7()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA8()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA9()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA10()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA11()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA12()) == a13.getA13()); +} + +} // t1 + +namespace t2 +{ + +struct A1 +{ + char _[43981]; + virtual ~A1() {} + + A1* getA1() {return this;} +}; + +struct A2 +{ + char _[34981]; + virtual ~A2() {} + + A2* getA2() {return this;} +}; + +struct A3 + : protected A1, + public virtual A2 +{ + char _[93481]; + virtual ~A3() {} + + A1* getA1_3() {return A1::getA1();} + A2* getA2() {return A2::getA2();} + A3* getA3() {return this;} +}; + +struct A4 + : public virtual A2, + public A1 +{ + char _[13489]; + virtual ~A4() {} + + A1* getA1_4() {return A1::getA1();} + A2* getA2() {return A2::getA2();} + A4* getA4() {return this;} +}; + +struct A5 + : public A3, + public A4 +{ + char _[13489]; + virtual ~A5() {} + + A1* getA1_3() {return A3::getA1();} + A1* getA1_4() {return A4::getA1();} + A2* getA2() {return A3::getA2();} + A3* getA3() {return A3::getA3();} + A4* getA4() {return A4::getA4();} + A5* getA5() {return this;} +}; + +struct A6 + : public A1 +{ + char _[81349]; + virtual ~A6() {} + + A1* getA1_6() {return A1::getA1();} + A6* getA6() {return this;} +}; + +struct A7 + : public A5, + public A6 +{ + char _[34819]; + virtual ~A7() {} + + A1* getA1_3() {return A5::getA1_3();} + A1* getA1_4() {return A5::getA1_4();} + A1* getA1_6() {return A6::getA1_6();} + A2* getA2() {return A5::getA2();} + A3* getA3() {return A5::getA3();} + A4* getA4() {return A5::getA4();} + A5* getA5() {return A5::getA5();} + A6* getA6() {return A6::getA6();} + A7* getA7() {return this;} +}; + +struct A8 + : public A7 +{ + char _[3489]; + virtual ~A8() {} + + A1* getA1_3() {return A7::getA1_3();} + A1* getA1_4() {return A7::getA1_4();} + A1* getA1_6() {return A7::getA1_6();} + A2* getA2() {return A7::getA2();} + A3* getA3() {return A7::getA3();} + A4* getA4() {return A7::getA4();} + A5* getA5() {return A7::getA5();} + A6* getA6() {return A7::getA6();} + A7* getA7() {return A7::getA7();} + A8* getA8() {return this;} +}; + +struct A9 + : public A1 +{ + char _[3481]; + virtual ~A9() {} + + A1* getA1_9() {return A1::getA1();} + A9* getA9() {return this;} +}; + +struct A10 + : public virtual A8 +{ + char _[4831]; + virtual ~A10() {} + + A1* getA1_3() {return A8::getA1_3();} + A1* getA1_4() {return A8::getA1_4();} + A1* getA1_6() {return A8::getA1_6();} + A2* getA2() {return A8::getA2();} + A3* getA3() {return A8::getA3();} + A4* getA4() {return A8::getA4();} + A5* getA5() {return A8::getA5();} + A6* getA6() {return A8::getA6();} + A7* getA7() {return A8::getA7();} + A8* getA8() {return A8::getA8();} + A10* getA10() {return this;} +}; + +struct A11 + : public virtual A8, + public A9 +{ + char _[6483]; + virtual ~A11() {} + + A1* getA1_3() {return A8::getA1_3();} + A1* getA1_4() {return A8::getA1_4();} + A1* getA1_6() {return A8::getA1_6();} + A1* getA1_9() {return A9::getA1_9();} + A2* getA2() {return A8::getA2();} + A3* getA3() {return A8::getA3();} + A4* getA4() {return A8::getA4();} + A5* getA5() {return A8::getA5();} + A6* getA6() {return A8::getA6();} + A7* getA7() {return A8::getA7();} + A8* getA8() {return A8::getA8();} + A9* getA9() {return A9::getA9();} + A11* getA11() {return this;} +}; + +struct A12 + : public A10, + public A11 +{ + char _[2283]; + virtual ~A12() {} + + A1* getA1_3() {return A10::getA1_3();} + A1* getA1_4() {return A10::getA1_4();} + A1* getA1_6() {return A10::getA1_6();} + A1* getA1_9() {return A11::getA1_9();} + A2* getA2() {return A10::getA2();} + A3* getA3() {return A10::getA3();} + A4* getA4() {return A10::getA4();} + A5* getA5() {return A10::getA5();} + A6* getA6() {return A10::getA6();} + A7* getA7() {return A10::getA7();} + A8* getA8() {return A10::getA8();} + A9* getA9() {return A11::getA9();} + A10* getA10() {return A10::getA10();} + A11* getA11() {return A11::getA11();} + A12* getA12() {return this;} +}; + +struct A13 + : public A12 +{ + char _[1283]; + virtual ~A13() {} + + A1* getA1_3() {return A12::getA1_3();} + A1* getA1_4() {return A12::getA1_4();} + A1* getA1_6() {return A12::getA1_6();} + A1* getA1_9() {return A12::getA1_9();} + A2* getA2() {return A12::getA2();} + A3* getA3() {return A12::getA3();} + A4* getA4() {return A12::getA4();} + A5* getA5() {return A12::getA5();} + A6* getA6() {return A12::getA6();} + A7* getA7() {return A12::getA7();} + A8* getA8() {return A12::getA8();} + A9* getA9() {return A12::getA9();} + A10* getA10() {return A12::getA10();} + A11* getA11() {return A12::getA11();} + A12* getA12() {return A12::getA12();} + A13* getA13() {return this;} +}; + +void test() +{ + A3 a3; + A4 a4; + A5 a5; + A6 a6; + A7 a7; + A8 a8; + A9 a9; + A10 a10; + A11 a11; + A12 a12; + A13 a13; + + assert(dynamic_cast<A3*>(a3.getA1_3()) == 0); + assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3()); + + assert(dynamic_cast<A3*>(a4.getA1_4()) == 0); + assert(dynamic_cast<A3*>(a4.getA2()) == 0); + assert(dynamic_cast<A4*>(a4.getA1_4()) == a4.getA4()); + assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4()); + + assert(dynamic_cast<A3*>(a5.getA1_3()) == 0); + assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3()); + + assert(dynamic_cast<A4*>(a5.getA1_3()) == 0); + assert(dynamic_cast<A4*>(a5.getA1_4()) == a5.getA4()); + assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4()); + assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4()); + + assert(dynamic_cast<A5*>(a5.getA1_3()) == 0); + assert(dynamic_cast<A5*>(a5.getA1_4()) == a5.getA5()); + assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5()); + assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5()); + assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5()); + assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5()); + + assert(dynamic_cast<A3*>(a6.getA1_6()) == 0); + + assert(dynamic_cast<A4*>(a6.getA1_6()) == 0); + + assert(dynamic_cast<A5*>(a6.getA1_6()) == 0); + + assert(dynamic_cast<A6*>(a6.getA1_6()) == a6.getA6()); + + assert(dynamic_cast<A3*>(a7.getA1_3()) == 0); + assert(dynamic_cast<A3*>(a7.getA1_4()) == a7.getA3()); + assert(dynamic_cast<A3*>(a7.getA2()) == a7.getA3()); + + assert(dynamic_cast<A4*>(a7.getA1_3()) == 0); + assert(dynamic_cast<A4*>(a7.getA1_4()) == a7.getA4()); + assert(dynamic_cast<A4*>(a7.getA2()) == a7.getA4()); + assert(dynamic_cast<A4*>(a7.getA3()) == a7.getA4()); + + assert(dynamic_cast<A5*>(a7.getA1_3()) == 0); + assert(dynamic_cast<A5*>(a7.getA1_4()) == a7.getA5()); + assert(dynamic_cast<A5*>(a7.getA2()) == a7.getA5()); + assert(dynamic_cast<A5*>(a7.getA3()) == a7.getA5()); + assert(dynamic_cast<A5*>(a7.getA4()) == a7.getA5()); + + assert(dynamic_cast<A6*>(a7.getA1_3()) == 0); + assert(dynamic_cast<A6*>(a7.getA1_4()) == a7.getA6()); + assert(dynamic_cast<A6*>(a7.getA1_6()) == a7.getA6()); + assert(dynamic_cast<A6*>(a7.getA2()) == a7.getA6()); + assert(dynamic_cast<A6*>(a7.getA3()) == a7.getA6()); + assert(dynamic_cast<A6*>(a7.getA4()) == a7.getA6()); + assert(dynamic_cast<A6*>(a7.getA5()) == a7.getA6()); + + assert(dynamic_cast<A7*>(a7.getA1_3()) == 0); + assert(dynamic_cast<A7*>(a7.getA1_4()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA1_6()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA2()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA3()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA4()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA5()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA6()) == a7.getA7()); + + assert(dynamic_cast<A3*>(a8.getA1_3()) == 0); + assert(dynamic_cast<A3*>(a8.getA1_4()) == a8.getA3()); + assert(dynamic_cast<A3*>(a8.getA2()) == a8.getA3()); + + assert(dynamic_cast<A4*>(a8.getA1_3()) == 0); + assert(dynamic_cast<A4*>(a8.getA1_4()) == a8.getA4()); + assert(dynamic_cast<A4*>(a8.getA2()) == a8.getA4()); + assert(dynamic_cast<A4*>(a8.getA3()) == a8.getA4()); + + assert(dynamic_cast<A5*>(a8.getA1_3()) == 0); + assert(dynamic_cast<A5*>(a8.getA1_4()) == a8.getA5()); + assert(dynamic_cast<A5*>(a8.getA2()) == a8.getA5()); + assert(dynamic_cast<A5*>(a8.getA3()) == a8.getA5()); + assert(dynamic_cast<A5*>(a8.getA4()) == a8.getA5()); + + assert(dynamic_cast<A6*>(a8.getA1_3()) == 0); + assert(dynamic_cast<A6*>(a8.getA1_4()) == a8.getA6()); + assert(dynamic_cast<A6*>(a8.getA1_6()) == a8.getA6()); + assert(dynamic_cast<A6*>(a8.getA2()) == a8.getA6()); + assert(dynamic_cast<A6*>(a8.getA3()) == a8.getA6()); + assert(dynamic_cast<A6*>(a8.getA4()) == a8.getA6()); + assert(dynamic_cast<A6*>(a8.getA5()) == a8.getA6()); + + assert(dynamic_cast<A7*>(a8.getA1_3()) == 0); + assert(dynamic_cast<A7*>(a8.getA1_4()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA1_6()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA2()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA3()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA4()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA5()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA6()) == a8.getA7()); + + assert(dynamic_cast<A8*>(a8.getA1_3()) == 0); + assert(dynamic_cast<A8*>(a8.getA1_4()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA1_6()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA2()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA3()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA4()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA5()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA6()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA7()) == a8.getA8()); + + assert(dynamic_cast<A3*>(a9.getA1_9()) == 0); + + assert(dynamic_cast<A4*>(a9.getA1_9()) == 0); + + assert(dynamic_cast<A5*>(a9.getA1_9()) == 0); + + assert(dynamic_cast<A6*>(a9.getA1_9()) == 0); + + assert(dynamic_cast<A7*>(a9.getA1_9()) == 0); + + assert(dynamic_cast<A8*>(a9.getA1_9()) == 0); + + assert(dynamic_cast<A9*>(a9.getA1_9()) == a9.getA9()); + + assert(dynamic_cast<A3*>(a10.getA1_3()) == 0); + assert(dynamic_cast<A3*>(a10.getA1_4()) == a10.getA3()); + assert(dynamic_cast<A3*>(a10.getA1_6()) == a10.getA3()); + assert(dynamic_cast<A3*>(a10.getA2()) == a10.getA3()); + + assert(dynamic_cast<A4*>(a10.getA1_3()) == 0); + assert(dynamic_cast<A4*>(a10.getA1_4()) == a10.getA4()); + assert(dynamic_cast<A4*>(a10.getA1_6()) == a10.getA4()); + assert(dynamic_cast<A4*>(a10.getA2()) == a10.getA4()); + assert(dynamic_cast<A4*>(a10.getA3()) == a10.getA4()); + + assert(dynamic_cast<A5*>(a10.getA1_3()) == 0); + assert(dynamic_cast<A5*>(a10.getA1_4()) == a10.getA5()); + assert(dynamic_cast<A5*>(a10.getA1_6()) == a10.getA5()); + assert(dynamic_cast<A5*>(a10.getA2()) == a10.getA5()); + assert(dynamic_cast<A5*>(a10.getA3()) == a10.getA5()); + assert(dynamic_cast<A5*>(a10.getA4()) == a10.getA5()); + + assert(dynamic_cast<A6*>(a10.getA1_3()) == 0); + assert(dynamic_cast<A6*>(a10.getA1_4()) == a10.getA6()); + assert(dynamic_cast<A6*>(a10.getA1_6()) == a10.getA6()); + assert(dynamic_cast<A6*>(a10.getA2()) == a10.getA6()); + assert(dynamic_cast<A6*>(a10.getA3()) == a10.getA6()); + assert(dynamic_cast<A6*>(a10.getA4()) == a10.getA6()); + assert(dynamic_cast<A6*>(a10.getA5()) == a10.getA6()); + + assert(dynamic_cast<A7*>(a10.getA1_3()) == 0); + assert(dynamic_cast<A7*>(a10.getA1_4()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA1_6()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA2()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA3()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA4()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA5()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA6()) == a10.getA7()); + + assert(dynamic_cast<A8*>(a10.getA1_3()) == 0); + assert(dynamic_cast<A8*>(a10.getA1_4()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA1_6()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA2()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA3()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA4()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA5()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA6()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA7()) == a10.getA8()); + + assert(dynamic_cast<A9*>(a10.getA1_3()) == 0); + assert(dynamic_cast<A9*>(a10.getA1_4()) == 0); + assert(dynamic_cast<A9*>(a10.getA1_6()) == 0); + assert(dynamic_cast<A9*>(a10.getA2()) == 0); + assert(dynamic_cast<A9*>(a10.getA3()) == 0); + assert(dynamic_cast<A9*>(a10.getA4()) == 0); + assert(dynamic_cast<A9*>(a10.getA5()) == 0); + assert(dynamic_cast<A9*>(a10.getA6()) == 0); + assert(dynamic_cast<A9*>(a10.getA7()) == 0); + assert(dynamic_cast<A9*>(a10.getA8()) == 0); + + assert(dynamic_cast<A10*>(a10.getA1_3()) == 0); + assert(dynamic_cast<A10*>(a10.getA1_4()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA1_6()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA2()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA3()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA4()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA5()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA6()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA7()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA8()) == a10.getA10()); + + assert(dynamic_cast<A3*>(a11.getA1_3()) == 0); + assert(dynamic_cast<A3*>(a11.getA1_4()) == a11.getA3()); + assert(dynamic_cast<A3*>(a11.getA1_6()) == a11.getA3()); + assert(dynamic_cast<A3*>(a11.getA1_9()) == a11.getA3()); + assert(dynamic_cast<A3*>(a11.getA2()) == a11.getA3()); + + assert(dynamic_cast<A4*>(a11.getA1_3()) == 0); + assert(dynamic_cast<A4*>(a11.getA1_4()) == a11.getA4()); + assert(dynamic_cast<A4*>(a11.getA1_6()) == a11.getA4()); + assert(dynamic_cast<A4*>(a11.getA1_9()) == a11.getA4()); + assert(dynamic_cast<A4*>(a11.getA2()) == a11.getA4()); + assert(dynamic_cast<A4*>(a11.getA3()) == a11.getA4()); + + assert(dynamic_cast<A5*>(a11.getA1_3()) == 0); + assert(dynamic_cast<A5*>(a11.getA1_4()) == a11.getA5()); + assert(dynamic_cast<A5*>(a11.getA1_6()) == a11.getA5()); + assert(dynamic_cast<A5*>(a11.getA1_9()) == a11.getA5()); + assert(dynamic_cast<A5*>(a11.getA2()) == a11.getA5()); + assert(dynamic_cast<A5*>(a11.getA3()) == a11.getA5()); + assert(dynamic_cast<A5*>(a11.getA4()) == a11.getA5()); + + assert(dynamic_cast<A6*>(a11.getA1_3()) == 0); + assert(dynamic_cast<A6*>(a11.getA1_4()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA1_6()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA1_9()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA2()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA3()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA4()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA5()) == a11.getA6()); + + assert(dynamic_cast<A7*>(a11.getA1_3()) == 0); + assert(dynamic_cast<A7*>(a11.getA1_4()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA1_6()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA1_9()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA2()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA3()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA4()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA5()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA6()) == a11.getA7()); + + assert(dynamic_cast<A8*>(a11.getA1_3()) == 0); + assert(dynamic_cast<A8*>(a11.getA1_4()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA1_6()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA1_9()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA2()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA3()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA4()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA5()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA6()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA7()) == a11.getA8()); + + assert(dynamic_cast<A9*>(a11.getA1_3()) == 0); + assert(dynamic_cast<A9*>(a11.getA1_4()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA1_6()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA1_9()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA2()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA3()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA4()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA5()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA6()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA7()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA8()) == a11.getA9()); + + assert(dynamic_cast<A10*>(a11.getA1_3()) == 0); + assert(dynamic_cast<A10*>(a11.getA1_4()) == 0); + assert(dynamic_cast<A10*>(a11.getA1_6()) == 0); + assert(dynamic_cast<A10*>(a11.getA1_9()) == 0); + assert(dynamic_cast<A10*>(a11.getA2()) == 0); + assert(dynamic_cast<A10*>(a11.getA3()) == 0); + assert(dynamic_cast<A10*>(a11.getA4()) == 0); + assert(dynamic_cast<A10*>(a11.getA5()) == 0); + assert(dynamic_cast<A10*>(a11.getA6()) == 0); + assert(dynamic_cast<A10*>(a11.getA7()) == 0); + assert(dynamic_cast<A10*>(a11.getA8()) == 0); + assert(dynamic_cast<A10*>(a11.getA9()) == 0); + + assert(dynamic_cast<A11*>(a11.getA1_3()) == 0); + assert(dynamic_cast<A11*>(a11.getA1_4()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA1_6()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA1_9()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA2()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA3()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA4()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA5()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA6()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA7()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA8()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA9()) == a11.getA11()); + + assert(dynamic_cast<A3*>(a12.getA1_3()) == 0); + assert(dynamic_cast<A3*>(a12.getA1_4()) == a12.getA3()); + assert(dynamic_cast<A3*>(a12.getA1_6()) == a12.getA3()); + assert(dynamic_cast<A3*>(a12.getA1_9()) == a12.getA3()); + assert(dynamic_cast<A3*>(a12.getA2()) == a12.getA3()); + + assert(dynamic_cast<A4*>(a12.getA1_3()) == 0); + assert(dynamic_cast<A4*>(a12.getA1_4()) == a12.getA4()); + assert(dynamic_cast<A4*>(a12.getA1_6()) == a12.getA4()); + assert(dynamic_cast<A4*>(a12.getA1_9()) == a12.getA4()); + assert(dynamic_cast<A4*>(a12.getA2()) == a12.getA4()); + assert(dynamic_cast<A4*>(a12.getA3()) == a12.getA4()); + + assert(dynamic_cast<A5*>(a12.getA1_3()) == 0); + assert(dynamic_cast<A5*>(a12.getA1_4()) == a12.getA5()); + assert(dynamic_cast<A5*>(a12.getA1_6()) == a12.getA5()); + assert(dynamic_cast<A5*>(a12.getA1_9()) == a12.getA5()); + assert(dynamic_cast<A5*>(a12.getA2()) == a12.getA5()); + assert(dynamic_cast<A5*>(a12.getA3()) == a12.getA5()); + assert(dynamic_cast<A5*>(a12.getA4()) == a12.getA5()); + + assert(dynamic_cast<A6*>(a12.getA1_3()) == 0); + assert(dynamic_cast<A6*>(a12.getA1_4()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA1_6()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA1_9()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA2()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA3()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA4()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA5()) == a12.getA6()); + + assert(dynamic_cast<A7*>(a12.getA1_3()) == 0); + assert(dynamic_cast<A7*>(a12.getA1_4()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA1_6()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA1_9()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA2()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA3()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA4()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA5()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA6()) == a12.getA7()); + + assert(dynamic_cast<A8*>(a12.getA1_3()) == 0); + assert(dynamic_cast<A8*>(a12.getA1_4()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA1_6()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA1_9()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA2()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA3()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA4()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA5()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA6()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA7()) == a12.getA8()); + + assert(dynamic_cast<A9*>(a12.getA1_3()) == 0); + assert(dynamic_cast<A9*>(a12.getA1_4()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA1_6()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA1_9()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA2()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA3()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA4()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA5()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA6()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA7()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA8()) == a12.getA9()); + + assert(dynamic_cast<A10*>(a12.getA1_3()) == 0); + assert(dynamic_cast<A10*>(a12.getA1_4()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA1_6()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA1_9()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA2()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA3()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA4()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA5()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA6()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA7()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA8()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA9()) == a12.getA10()); + + assert(dynamic_cast<A11*>(a12.getA1_3()) == 0); + assert(dynamic_cast<A11*>(a12.getA1_4()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA1_6()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA1_9()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA2()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA3()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA4()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA5()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA6()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA7()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA8()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA9()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA10()) == a12.getA11()); + + assert(dynamic_cast<A12*>(a12.getA1_3()) == 0); + assert(dynamic_cast<A12*>(a12.getA1_4()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA1_6()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA1_9()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA2()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA3()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA4()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA5()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA6()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA7()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA8()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA9()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA10()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA11()) == a12.getA12()); + + assert(dynamic_cast<A3*>(a13.getA1_3()) == 0); + assert(dynamic_cast<A3*>(a13.getA1_4()) == a13.getA3()); + assert(dynamic_cast<A3*>(a13.getA1_6()) == a13.getA3()); + assert(dynamic_cast<A3*>(a13.getA1_9()) == a13.getA3()); + assert(dynamic_cast<A3*>(a13.getA2()) == a13.getA3()); + + assert(dynamic_cast<A4*>(a13.getA1_3()) == 0); + assert(dynamic_cast<A4*>(a13.getA1_4()) == a13.getA4()); + assert(dynamic_cast<A4*>(a13.getA1_6()) == a13.getA4()); + assert(dynamic_cast<A4*>(a13.getA1_9()) == a13.getA4()); + assert(dynamic_cast<A4*>(a13.getA2()) == a13.getA4()); + assert(dynamic_cast<A4*>(a13.getA3()) == a13.getA4()); + + assert(dynamic_cast<A5*>(a13.getA1_3()) == 0); + assert(dynamic_cast<A5*>(a13.getA1_4()) == a13.getA5()); + assert(dynamic_cast<A5*>(a13.getA1_6()) == a13.getA5()); + assert(dynamic_cast<A5*>(a13.getA1_9()) == a13.getA5()); + assert(dynamic_cast<A5*>(a13.getA2()) == a13.getA5()); + assert(dynamic_cast<A5*>(a13.getA3()) == a13.getA5()); + assert(dynamic_cast<A5*>(a13.getA4()) == a13.getA5()); + + assert(dynamic_cast<A6*>(a13.getA1_3()) == 0); + assert(dynamic_cast<A6*>(a13.getA1_4()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA1_6()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA1_9()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA2()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA3()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA4()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA5()) == a13.getA6()); + + assert(dynamic_cast<A7*>(a13.getA1_3()) == 0); + assert(dynamic_cast<A7*>(a13.getA1_4()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA1_6()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA1_9()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA2()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA3()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA4()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA5()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA6()) == a13.getA7()); + + assert(dynamic_cast<A8*>(a13.getA1_3()) == 0); + assert(dynamic_cast<A8*>(a13.getA1_4()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA1_6()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA1_9()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA2()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA3()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA4()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA5()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA6()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA7()) == a13.getA8()); + + assert(dynamic_cast<A9*>(a13.getA1_3()) == 0); + assert(dynamic_cast<A9*>(a13.getA1_4()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA1_6()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA1_9()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA2()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA3()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA4()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA5()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA6()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA7()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA8()) == a13.getA9()); + + assert(dynamic_cast<A10*>(a13.getA1_3()) == 0); + assert(dynamic_cast<A10*>(a13.getA1_4()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA1_6()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA1_9()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA2()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA3()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA4()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA5()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA6()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA7()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA8()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA9()) == a13.getA10()); + + assert(dynamic_cast<A11*>(a13.getA1_3()) == 0); + assert(dynamic_cast<A11*>(a13.getA1_4()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA1_6()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA1_9()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA2()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA3()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA4()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA5()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA6()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA7()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA8()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA9()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA10()) == a13.getA11()); + + assert(dynamic_cast<A12*>(a13.getA1_3()) == 0); + assert(dynamic_cast<A12*>(a13.getA1_4()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA1_6()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA1_9()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA2()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA3()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA4()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA5()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA6()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA7()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA8()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA9()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA10()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA11()) == a13.getA12()); + + assert(dynamic_cast<A13*>(a13.getA1_3()) == 0); + assert(dynamic_cast<A13*>(a13.getA1_4()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA1_6()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA1_9()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA2()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA3()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA4()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA5()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA6()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA7()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA8()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA9()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA10()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA11()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA12()) == a13.getA13()); +} + +} // 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 A1, + protected virtual A2 +{ + char _[93481]; + virtual ~A3() {} + + A1* getA1_3() {return A1::getA1();} + A2* getA2() {return A2::getA2();} + A3* getA3() {return this;} +}; + +struct A4 + : public virtual A2, + public A1 +{ + char _[13489]; + virtual ~A4() {} + + A1* getA1_4() {return A1::getA1();} + A2* getA2() {return A2::getA2();} + A4* getA4() {return this;} +}; + +struct A5 + : public A3, + public A4 +{ + char _[13489]; + virtual ~A5() {} + + A1* getA1_3() {return A3::getA1();} + A1* getA1_4() {return A4::getA1();} + A2* getA2() {return A3::getA2();} + A3* getA3() {return A3::getA3();} + A4* getA4() {return A4::getA4();} + A5* getA5() {return this;} +}; + +struct A6 + : public A1 +{ + char _[81349]; + virtual ~A6() {} + + A1* getA1_6() {return A1::getA1();} + A6* getA6() {return this;} +}; + +struct A7 + : public A5, + public A6 +{ + char _[34819]; + virtual ~A7() {} + + A1* getA1_3() {return A5::getA1_3();} + A1* getA1_4() {return A5::getA1_4();} + A1* getA1_6() {return A6::getA1_6();} + A2* getA2() {return A5::getA2();} + A3* getA3() {return A5::getA3();} + A4* getA4() {return A5::getA4();} + A5* getA5() {return A5::getA5();} + A6* getA6() {return A6::getA6();} + A7* getA7() {return this;} +}; + +struct A8 + : public A7 +{ + char _[3489]; + virtual ~A8() {} + + A1* getA1_3() {return A7::getA1_3();} + A1* getA1_4() {return A7::getA1_4();} + A1* getA1_6() {return A7::getA1_6();} + A2* getA2() {return A7::getA2();} + A3* getA3() {return A7::getA3();} + A4* getA4() {return A7::getA4();} + A5* getA5() {return A7::getA5();} + A6* getA6() {return A7::getA6();} + A7* getA7() {return A7::getA7();} + A8* getA8() {return this;} +}; + +struct A9 + : public A1 +{ + char _[3481]; + virtual ~A9() {} + + A1* getA1_9() {return A1::getA1();} + A9* getA9() {return this;} +}; + +struct A10 + : public virtual A8 +{ + char _[4831]; + virtual ~A10() {} + + A1* getA1_3() {return A8::getA1_3();} + A1* getA1_4() {return A8::getA1_4();} + A1* getA1_6() {return A8::getA1_6();} + A2* getA2() {return A8::getA2();} + A3* getA3() {return A8::getA3();} + A4* getA4() {return A8::getA4();} + A5* getA5() {return A8::getA5();} + A6* getA6() {return A8::getA6();} + A7* getA7() {return A8::getA7();} + A8* getA8() {return A8::getA8();} + A10* getA10() {return this;} +}; + +struct A11 + : public virtual A8, + public A9 +{ + char _[6483]; + virtual ~A11() {} + + A1* getA1_3() {return A8::getA1_3();} + A1* getA1_4() {return A8::getA1_4();} + A1* getA1_6() {return A8::getA1_6();} + A1* getA1_9() {return A9::getA1_9();} + A2* getA2() {return A8::getA2();} + A3* getA3() {return A8::getA3();} + A4* getA4() {return A8::getA4();} + A5* getA5() {return A8::getA5();} + A6* getA6() {return A8::getA6();} + A7* getA7() {return A8::getA7();} + A8* getA8() {return A8::getA8();} + A9* getA9() {return A9::getA9();} + A11* getA11() {return this;} +}; + +struct A12 + : public A10, + public A11 +{ + char _[2283]; + virtual ~A12() {} + + A1* getA1_3() {return A10::getA1_3();} + A1* getA1_4() {return A10::getA1_4();} + A1* getA1_6() {return A10::getA1_6();} + A1* getA1_9() {return A11::getA1_9();} + A2* getA2() {return A10::getA2();} + A3* getA3() {return A10::getA3();} + A4* getA4() {return A10::getA4();} + A5* getA5() {return A10::getA5();} + A6* getA6() {return A10::getA6();} + A7* getA7() {return A10::getA7();} + A8* getA8() {return A10::getA8();} + A9* getA9() {return A11::getA9();} + A10* getA10() {return A10::getA10();} + A11* getA11() {return A11::getA11();} + A12* getA12() {return this;} +}; + +struct A13 + : public A12 +{ + char _[1283]; + virtual ~A13() {} + + A1* getA1_3() {return A12::getA1_3();} + A1* getA1_4() {return A12::getA1_4();} + A1* getA1_6() {return A12::getA1_6();} + A1* getA1_9() {return A12::getA1_9();} + A2* getA2() {return A12::getA2();} + A3* getA3() {return A12::getA3();} + A4* getA4() {return A12::getA4();} + A5* getA5() {return A12::getA5();} + A6* getA6() {return A12::getA6();} + A7* getA7() {return A12::getA7();} + A8* getA8() {return A12::getA8();} + A9* getA9() {return A12::getA9();} + A10* getA10() {return A12::getA10();} + A11* getA11() {return A12::getA11();} + A12* getA12() {return A12::getA12();} + A13* getA13() {return this;} +}; + +void test() +{ + A3 a3; + A4 a4; + A5 a5; + A6 a6; + A7 a7; + A8 a8; + A9 a9; + A10 a10; + A11 a11; + A12 a12; + A13 a13; + + assert(dynamic_cast<A3*>(a3.getA1_3()) == a3.getA3()); + assert(dynamic_cast<A3*>(a3.getA2()) == 0); + + assert(dynamic_cast<A3*>(a4.getA1_4()) == 0); + assert(dynamic_cast<A3*>(a4.getA2()) == 0); + assert(dynamic_cast<A4*>(a4.getA1_4()) == a4.getA4()); + assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4()); + + assert(dynamic_cast<A3*>(a5.getA1_3()) == a5.getA3()); + assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3()); + + assert(dynamic_cast<A4*>(a5.getA1_3()) == a5.getA4()); + assert(dynamic_cast<A4*>(a5.getA1_4()) == a5.getA4()); + assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4()); + assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4()); + + assert(dynamic_cast<A5*>(a5.getA1_3()) == a5.getA5()); + assert(dynamic_cast<A5*>(a5.getA1_4()) == a5.getA5()); + assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5()); + assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5()); + assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5()); + assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5()); + + assert(dynamic_cast<A3*>(a6.getA1_6()) == 0); + + assert(dynamic_cast<A4*>(a6.getA1_6()) == 0); + + assert(dynamic_cast<A5*>(a6.getA1_6()) == 0); + + assert(dynamic_cast<A6*>(a6.getA1_6()) == a6.getA6()); + + assert(dynamic_cast<A3*>(a7.getA1_3()) == a7.getA3()); + assert(dynamic_cast<A3*>(a7.getA1_4()) == a7.getA3()); + assert(dynamic_cast<A3*>(a7.getA2()) == a7.getA3()); + + assert(dynamic_cast<A4*>(a7.getA1_3()) == a7.getA4()); + assert(dynamic_cast<A4*>(a7.getA1_4()) == a7.getA4()); + assert(dynamic_cast<A4*>(a7.getA2()) == a7.getA4()); + assert(dynamic_cast<A4*>(a7.getA3()) == a7.getA4()); + + assert(dynamic_cast<A5*>(a7.getA1_3()) == a7.getA5()); + assert(dynamic_cast<A5*>(a7.getA1_4()) == a7.getA5()); + assert(dynamic_cast<A5*>(a7.getA2()) == a7.getA5()); + assert(dynamic_cast<A5*>(a7.getA3()) == a7.getA5()); + assert(dynamic_cast<A5*>(a7.getA4()) == a7.getA5()); + + assert(dynamic_cast<A6*>(a7.getA1_3()) == a7.getA6()); + assert(dynamic_cast<A6*>(a7.getA1_4()) == a7.getA6()); + assert(dynamic_cast<A6*>(a7.getA1_6()) == a7.getA6()); + assert(dynamic_cast<A6*>(a7.getA2()) == a7.getA6()); + assert(dynamic_cast<A6*>(a7.getA3()) == a7.getA6()); + assert(dynamic_cast<A6*>(a7.getA4()) == a7.getA6()); + assert(dynamic_cast<A6*>(a7.getA5()) == a7.getA6()); + + assert(dynamic_cast<A7*>(a7.getA1_3()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA1_4()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA1_6()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA2()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA3()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA4()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA5()) == a7.getA7()); + assert(dynamic_cast<A7*>(a7.getA6()) == a7.getA7()); + + assert(dynamic_cast<A3*>(a8.getA1_3()) == a8.getA3()); + assert(dynamic_cast<A3*>(a8.getA1_4()) == a8.getA3()); + assert(dynamic_cast<A3*>(a8.getA2()) == a8.getA3()); + + assert(dynamic_cast<A4*>(a8.getA1_3()) == a8.getA4()); + assert(dynamic_cast<A4*>(a8.getA1_4()) == a8.getA4()); + assert(dynamic_cast<A4*>(a8.getA2()) == a8.getA4()); + assert(dynamic_cast<A4*>(a8.getA3()) == a8.getA4()); + + assert(dynamic_cast<A5*>(a8.getA1_3()) == a8.getA5()); + assert(dynamic_cast<A5*>(a8.getA1_4()) == a8.getA5()); + assert(dynamic_cast<A5*>(a8.getA2()) == a8.getA5()); + assert(dynamic_cast<A5*>(a8.getA3()) == a8.getA5()); + assert(dynamic_cast<A5*>(a8.getA4()) == a8.getA5()); + + assert(dynamic_cast<A6*>(a8.getA1_3()) == a8.getA6()); + assert(dynamic_cast<A6*>(a8.getA1_4()) == a8.getA6()); + assert(dynamic_cast<A6*>(a8.getA1_6()) == a8.getA6()); + assert(dynamic_cast<A6*>(a8.getA2()) == a8.getA6()); + assert(dynamic_cast<A6*>(a8.getA3()) == a8.getA6()); + assert(dynamic_cast<A6*>(a8.getA4()) == a8.getA6()); + assert(dynamic_cast<A6*>(a8.getA5()) == a8.getA6()); + + assert(dynamic_cast<A7*>(a8.getA1_3()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA1_4()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA1_6()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA2()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA3()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA4()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA5()) == a8.getA7()); + assert(dynamic_cast<A7*>(a8.getA6()) == a8.getA7()); + + assert(dynamic_cast<A8*>(a8.getA1_3()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA1_4()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA1_6()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA2()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA3()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA4()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA5()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA6()) == a8.getA8()); + assert(dynamic_cast<A8*>(a8.getA7()) == a8.getA8()); + + assert(dynamic_cast<A3*>(a9.getA1_9()) == 0); + + assert(dynamic_cast<A4*>(a9.getA1_9()) == 0); + + assert(dynamic_cast<A5*>(a9.getA1_9()) == 0); + + assert(dynamic_cast<A6*>(a9.getA1_9()) == 0); + + assert(dynamic_cast<A7*>(a9.getA1_9()) == 0); + + assert(dynamic_cast<A8*>(a9.getA1_9()) == 0); + + assert(dynamic_cast<A9*>(a9.getA1_9()) == a9.getA9()); + + assert(dynamic_cast<A3*>(a10.getA1_3()) == a10.getA3()); + assert(dynamic_cast<A3*>(a10.getA1_4()) == a10.getA3()); + assert(dynamic_cast<A3*>(a10.getA1_6()) == a10.getA3()); + assert(dynamic_cast<A3*>(a10.getA2()) == a10.getA3()); + + assert(dynamic_cast<A4*>(a10.getA1_3()) == a10.getA4()); + assert(dynamic_cast<A4*>(a10.getA1_4()) == a10.getA4()); + assert(dynamic_cast<A4*>(a10.getA1_6()) == a10.getA4()); + assert(dynamic_cast<A4*>(a10.getA2()) == a10.getA4()); + assert(dynamic_cast<A4*>(a10.getA3()) == a10.getA4()); + + assert(dynamic_cast<A5*>(a10.getA1_3()) == a10.getA5()); + assert(dynamic_cast<A5*>(a10.getA1_4()) == a10.getA5()); + assert(dynamic_cast<A5*>(a10.getA1_6()) == a10.getA5()); + assert(dynamic_cast<A5*>(a10.getA2()) == a10.getA5()); + assert(dynamic_cast<A5*>(a10.getA3()) == a10.getA5()); + assert(dynamic_cast<A5*>(a10.getA4()) == a10.getA5()); + + assert(dynamic_cast<A6*>(a10.getA1_3()) == a10.getA6()); + assert(dynamic_cast<A6*>(a10.getA1_4()) == a10.getA6()); + assert(dynamic_cast<A6*>(a10.getA1_6()) == a10.getA6()); + assert(dynamic_cast<A6*>(a10.getA2()) == a10.getA6()); + assert(dynamic_cast<A6*>(a10.getA3()) == a10.getA6()); + assert(dynamic_cast<A6*>(a10.getA4()) == a10.getA6()); + assert(dynamic_cast<A6*>(a10.getA5()) == a10.getA6()); + + assert(dynamic_cast<A7*>(a10.getA1_3()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA1_4()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA1_6()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA2()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA3()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA4()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA5()) == a10.getA7()); + assert(dynamic_cast<A7*>(a10.getA6()) == a10.getA7()); + + assert(dynamic_cast<A8*>(a10.getA1_3()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA1_4()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA1_6()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA2()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA3()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA4()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA5()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA6()) == a10.getA8()); + assert(dynamic_cast<A8*>(a10.getA7()) == a10.getA8()); + + assert(dynamic_cast<A9*>(a10.getA1_3()) == 0); + assert(dynamic_cast<A9*>(a10.getA1_4()) == 0); + assert(dynamic_cast<A9*>(a10.getA1_6()) == 0); + assert(dynamic_cast<A9*>(a10.getA2()) == 0); + assert(dynamic_cast<A9*>(a10.getA3()) == 0); + assert(dynamic_cast<A9*>(a10.getA4()) == 0); + assert(dynamic_cast<A9*>(a10.getA5()) == 0); + assert(dynamic_cast<A9*>(a10.getA6()) == 0); + assert(dynamic_cast<A9*>(a10.getA7()) == 0); + assert(dynamic_cast<A9*>(a10.getA8()) == 0); + + assert(dynamic_cast<A10*>(a10.getA1_3()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA1_4()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA1_6()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA2()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA3()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA4()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA5()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA6()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA7()) == a10.getA10()); + assert(dynamic_cast<A10*>(a10.getA8()) == a10.getA10()); + + assert(dynamic_cast<A3*>(a11.getA1_3()) == a11.getA3()); + assert(dynamic_cast<A3*>(a11.getA1_4()) == a11.getA3()); + assert(dynamic_cast<A3*>(a11.getA1_6()) == a11.getA3()); + assert(dynamic_cast<A3*>(a11.getA1_9()) == a11.getA3()); + assert(dynamic_cast<A3*>(a11.getA2()) == a11.getA3()); + + assert(dynamic_cast<A4*>(a11.getA1_3()) == a11.getA4()); + assert(dynamic_cast<A4*>(a11.getA1_4()) == a11.getA4()); + assert(dynamic_cast<A4*>(a11.getA1_6()) == a11.getA4()); + assert(dynamic_cast<A4*>(a11.getA1_9()) == a11.getA4()); + assert(dynamic_cast<A4*>(a11.getA2()) == a11.getA4()); + assert(dynamic_cast<A4*>(a11.getA3()) == a11.getA4()); + + assert(dynamic_cast<A5*>(a11.getA1_3()) == a11.getA5()); + assert(dynamic_cast<A5*>(a11.getA1_4()) == a11.getA5()); + assert(dynamic_cast<A5*>(a11.getA1_6()) == a11.getA5()); + assert(dynamic_cast<A5*>(a11.getA1_9()) == a11.getA5()); + assert(dynamic_cast<A5*>(a11.getA2()) == a11.getA5()); + assert(dynamic_cast<A5*>(a11.getA3()) == a11.getA5()); + assert(dynamic_cast<A5*>(a11.getA4()) == a11.getA5()); + + assert(dynamic_cast<A6*>(a11.getA1_3()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA1_4()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA1_6()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA1_9()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA2()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA3()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA4()) == a11.getA6()); + assert(dynamic_cast<A6*>(a11.getA5()) == a11.getA6()); + + assert(dynamic_cast<A7*>(a11.getA1_3()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA1_4()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA1_6()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA1_9()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA2()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA3()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA4()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA5()) == a11.getA7()); + assert(dynamic_cast<A7*>(a11.getA6()) == a11.getA7()); + + assert(dynamic_cast<A8*>(a11.getA1_3()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA1_4()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA1_6()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA1_9()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA2()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA3()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA4()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA5()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA6()) == a11.getA8()); + assert(dynamic_cast<A8*>(a11.getA7()) == a11.getA8()); + + assert(dynamic_cast<A9*>(a11.getA1_3()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA1_4()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA1_6()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA1_9()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA2()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA3()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA4()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA5()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA6()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA7()) == a11.getA9()); + assert(dynamic_cast<A9*>(a11.getA8()) == a11.getA9()); + + assert(dynamic_cast<A10*>(a11.getA1_3()) == 0); + assert(dynamic_cast<A10*>(a11.getA1_4()) == 0); + assert(dynamic_cast<A10*>(a11.getA1_6()) == 0); + assert(dynamic_cast<A10*>(a11.getA1_9()) == 0); + assert(dynamic_cast<A10*>(a11.getA2()) == 0); + assert(dynamic_cast<A10*>(a11.getA3()) == 0); + assert(dynamic_cast<A10*>(a11.getA4()) == 0); + assert(dynamic_cast<A10*>(a11.getA5()) == 0); + assert(dynamic_cast<A10*>(a11.getA6()) == 0); + assert(dynamic_cast<A10*>(a11.getA7()) == 0); + assert(dynamic_cast<A10*>(a11.getA8()) == 0); + assert(dynamic_cast<A10*>(a11.getA9()) == 0); + + assert(dynamic_cast<A11*>(a11.getA1_3()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA1_4()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA1_6()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA1_9()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA2()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA3()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA4()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA5()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA6()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA7()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA8()) == a11.getA11()); + assert(dynamic_cast<A11*>(a11.getA9()) == a11.getA11()); + + assert(dynamic_cast<A3*>(a12.getA1_3()) == a12.getA3()); + assert(dynamic_cast<A3*>(a12.getA1_4()) == a12.getA3()); + assert(dynamic_cast<A3*>(a12.getA1_6()) == a12.getA3()); + assert(dynamic_cast<A3*>(a12.getA1_9()) == a12.getA3()); + assert(dynamic_cast<A3*>(a12.getA2()) == a12.getA3()); + + assert(dynamic_cast<A4*>(a12.getA1_3()) == a12.getA4()); + assert(dynamic_cast<A4*>(a12.getA1_4()) == a12.getA4()); + assert(dynamic_cast<A4*>(a12.getA1_6()) == a12.getA4()); + assert(dynamic_cast<A4*>(a12.getA1_9()) == a12.getA4()); + assert(dynamic_cast<A4*>(a12.getA2()) == a12.getA4()); + assert(dynamic_cast<A4*>(a12.getA3()) == a12.getA4()); + + assert(dynamic_cast<A5*>(a12.getA1_3()) == a12.getA5()); + assert(dynamic_cast<A5*>(a12.getA1_4()) == a12.getA5()); + assert(dynamic_cast<A5*>(a12.getA1_6()) == a12.getA5()); + assert(dynamic_cast<A5*>(a12.getA1_9()) == a12.getA5()); + assert(dynamic_cast<A5*>(a12.getA2()) == a12.getA5()); + assert(dynamic_cast<A5*>(a12.getA3()) == a12.getA5()); + assert(dynamic_cast<A5*>(a12.getA4()) == a12.getA5()); + + assert(dynamic_cast<A6*>(a12.getA1_3()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA1_4()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA1_6()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA1_9()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA2()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA3()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA4()) == a12.getA6()); + assert(dynamic_cast<A6*>(a12.getA5()) == a12.getA6()); + + assert(dynamic_cast<A7*>(a12.getA1_3()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA1_4()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA1_6()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA1_9()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA2()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA3()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA4()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA5()) == a12.getA7()); + assert(dynamic_cast<A7*>(a12.getA6()) == a12.getA7()); + + assert(dynamic_cast<A8*>(a12.getA1_3()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA1_4()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA1_6()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA1_9()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA2()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA3()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA4()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA5()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA6()) == a12.getA8()); + assert(dynamic_cast<A8*>(a12.getA7()) == a12.getA8()); + + assert(dynamic_cast<A9*>(a12.getA1_3()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA1_4()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA1_6()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA1_9()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA2()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA3()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA4()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA5()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA6()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA7()) == a12.getA9()); + assert(dynamic_cast<A9*>(a12.getA8()) == a12.getA9()); + + assert(dynamic_cast<A10*>(a12.getA1_3()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA1_4()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA1_6()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA1_9()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA2()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA3()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA4()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA5()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA6()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA7()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA8()) == a12.getA10()); + assert(dynamic_cast<A10*>(a12.getA9()) == a12.getA10()); + + assert(dynamic_cast<A11*>(a12.getA1_3()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA1_4()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA1_6()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA1_9()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA2()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA3()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA4()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA5()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA6()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA7()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA8()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA9()) == a12.getA11()); + assert(dynamic_cast<A11*>(a12.getA10()) == a12.getA11()); + + assert(dynamic_cast<A12*>(a12.getA1_3()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA1_4()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA1_6()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA1_9()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA2()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA3()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA4()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA5()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA6()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA7()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA8()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA9()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA10()) == a12.getA12()); + assert(dynamic_cast<A12*>(a12.getA11()) == a12.getA12()); + + assert(dynamic_cast<A3*>(a13.getA1_3()) == a13.getA3()); + assert(dynamic_cast<A3*>(a13.getA1_4()) == a13.getA3()); + assert(dynamic_cast<A3*>(a13.getA1_6()) == a13.getA3()); + assert(dynamic_cast<A3*>(a13.getA1_9()) == a13.getA3()); + assert(dynamic_cast<A3*>(a13.getA2()) == a13.getA3()); + + assert(dynamic_cast<A4*>(a13.getA1_3()) == a13.getA4()); + assert(dynamic_cast<A4*>(a13.getA1_4()) == a13.getA4()); + assert(dynamic_cast<A4*>(a13.getA1_6()) == a13.getA4()); + assert(dynamic_cast<A4*>(a13.getA1_9()) == a13.getA4()); + assert(dynamic_cast<A4*>(a13.getA2()) == a13.getA4()); + assert(dynamic_cast<A4*>(a13.getA3()) == a13.getA4()); + + assert(dynamic_cast<A5*>(a13.getA1_3()) == a13.getA5()); + assert(dynamic_cast<A5*>(a13.getA1_4()) == a13.getA5()); + assert(dynamic_cast<A5*>(a13.getA1_6()) == a13.getA5()); + assert(dynamic_cast<A5*>(a13.getA1_9()) == a13.getA5()); + assert(dynamic_cast<A5*>(a13.getA2()) == a13.getA5()); + assert(dynamic_cast<A5*>(a13.getA3()) == a13.getA5()); + assert(dynamic_cast<A5*>(a13.getA4()) == a13.getA5()); + + assert(dynamic_cast<A6*>(a13.getA1_3()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA1_4()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA1_6()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA1_9()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA2()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA3()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA4()) == a13.getA6()); + assert(dynamic_cast<A6*>(a13.getA5()) == a13.getA6()); + + assert(dynamic_cast<A7*>(a13.getA1_3()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA1_4()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA1_6()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA1_9()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA2()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA3()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA4()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA5()) == a13.getA7()); + assert(dynamic_cast<A7*>(a13.getA6()) == a13.getA7()); + + assert(dynamic_cast<A8*>(a13.getA1_3()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA1_4()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA1_6()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA1_9()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA2()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA3()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA4()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA5()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA6()) == a13.getA8()); + assert(dynamic_cast<A8*>(a13.getA7()) == a13.getA8()); + + assert(dynamic_cast<A9*>(a13.getA1_3()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA1_4()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA1_6()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA1_9()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA2()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA3()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA4()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA5()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA6()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA7()) == a13.getA9()); + assert(dynamic_cast<A9*>(a13.getA8()) == a13.getA9()); + + assert(dynamic_cast<A10*>(a13.getA1_3()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA1_4()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA1_6()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA1_9()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA2()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA3()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA4()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA5()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA6()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA7()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA8()) == a13.getA10()); + assert(dynamic_cast<A10*>(a13.getA9()) == a13.getA10()); + + assert(dynamic_cast<A11*>(a13.getA1_3()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA1_4()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA1_6()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA1_9()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA2()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA3()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA4()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA5()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA6()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA7()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA8()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA9()) == a13.getA11()); + assert(dynamic_cast<A11*>(a13.getA10()) == a13.getA11()); + + assert(dynamic_cast<A12*>(a13.getA1_3()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA1_4()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA1_6()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA1_9()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA2()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA3()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA4()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA5()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA6()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA7()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA8()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA9()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA10()) == a13.getA12()); + assert(dynamic_cast<A12*>(a13.getA11()) == a13.getA12()); + + assert(dynamic_cast<A13*>(a13.getA1_3()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA1_4()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA1_6()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA1_9()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA2()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA3()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA4()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA5()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA6()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA7()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA8()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA9()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA10()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA11()) == a13.getA13()); + assert(dynamic_cast<A13*>(a13.getA12()) == a13.getA13()); +} + +} // t3 + +#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(); + time_point t1 = Clock::now(); + std::cout << NS(t1-t0).count() << " microseconds\n"; +} |