168fd743cd3278364c9ec13da437586d989641265Howard Hinnant//===------------------------- dynamic_cast5.cpp --------------------------===// 268fd743cd3278364c9ec13da437586d989641265Howard Hinnant// 368fd743cd3278364c9ec13da437586d989641265Howard Hinnant// The LLVM Compiler Infrastructure 468fd743cd3278364c9ec13da437586d989641265Howard Hinnant// 568fd743cd3278364c9ec13da437586d989641265Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 668fd743cd3278364c9ec13da437586d989641265Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 768fd743cd3278364c9ec13da437586d989641265Howard Hinnant// 868fd743cd3278364c9ec13da437586d989641265Howard Hinnant//===----------------------------------------------------------------------===// 968fd743cd3278364c9ec13da437586d989641265Howard Hinnant 1068fd743cd3278364c9ec13da437586d989641265Howard Hinnant#include <cassert> 1168fd743cd3278364c9ec13da437586d989641265Howard Hinnant 1268fd743cd3278364c9ec13da437586d989641265Howard Hinnantnamespace t1 1368fd743cd3278364c9ec13da437586d989641265Howard Hinnant{ 1468fd743cd3278364c9ec13da437586d989641265Howard Hinnant 1568fd743cd3278364c9ec13da437586d989641265Howard Hinnantstruct A1 1668fd743cd3278364c9ec13da437586d989641265Howard Hinnant{ 1768fd743cd3278364c9ec13da437586d989641265Howard Hinnant char _[43981]; 1868fd743cd3278364c9ec13da437586d989641265Howard Hinnant virtual ~A1() {} 1968fd743cd3278364c9ec13da437586d989641265Howard Hinnant 2068fd743cd3278364c9ec13da437586d989641265Howard Hinnant A1* getA1() {return this;} 2168fd743cd3278364c9ec13da437586d989641265Howard Hinnant}; 2268fd743cd3278364c9ec13da437586d989641265Howard Hinnant 2368fd743cd3278364c9ec13da437586d989641265Howard Hinnantstruct A2 2468fd743cd3278364c9ec13da437586d989641265Howard Hinnant{ 2568fd743cd3278364c9ec13da437586d989641265Howard Hinnant char _[34981]; 2668fd743cd3278364c9ec13da437586d989641265Howard Hinnant virtual ~A2() {} 2768fd743cd3278364c9ec13da437586d989641265Howard Hinnant 2868fd743cd3278364c9ec13da437586d989641265Howard Hinnant A2* getA2() {return this;} 2968fd743cd3278364c9ec13da437586d989641265Howard Hinnant}; 3068fd743cd3278364c9ec13da437586d989641265Howard Hinnant 3168fd743cd3278364c9ec13da437586d989641265Howard Hinnantstruct A3 3268fd743cd3278364c9ec13da437586d989641265Howard Hinnant : public virtual A1, 3368fd743cd3278364c9ec13da437586d989641265Howard Hinnant private A2 3468fd743cd3278364c9ec13da437586d989641265Howard Hinnant{ 3568fd743cd3278364c9ec13da437586d989641265Howard Hinnant char _[93481]; 3668fd743cd3278364c9ec13da437586d989641265Howard Hinnant virtual ~A3() {} 3768fd743cd3278364c9ec13da437586d989641265Howard Hinnant 3868fd743cd3278364c9ec13da437586d989641265Howard Hinnant A1* getA1() {return A1::getA1();} 3968fd743cd3278364c9ec13da437586d989641265Howard Hinnant A2* getA2() {return A2::getA2();} 4068fd743cd3278364c9ec13da437586d989641265Howard Hinnant A3* getA3() {return this;} 4168fd743cd3278364c9ec13da437586d989641265Howard Hinnant}; 4268fd743cd3278364c9ec13da437586d989641265Howard Hinnant 4368fd743cd3278364c9ec13da437586d989641265Howard Hinnantstruct A4 4468fd743cd3278364c9ec13da437586d989641265Howard Hinnant : public A3, 4568fd743cd3278364c9ec13da437586d989641265Howard Hinnant public A2 4668fd743cd3278364c9ec13da437586d989641265Howard Hinnant{ 4768fd743cd3278364c9ec13da437586d989641265Howard Hinnant char _[13489]; 4868fd743cd3278364c9ec13da437586d989641265Howard Hinnant virtual ~A4() {} 4968fd743cd3278364c9ec13da437586d989641265Howard Hinnant 5068fd743cd3278364c9ec13da437586d989641265Howard Hinnant t1::A1* getA1() {return A3::getA1();} 5168fd743cd3278364c9ec13da437586d989641265Howard Hinnant A2* getA2() {return A3::getA2();} 5268fd743cd3278364c9ec13da437586d989641265Howard Hinnant A3* getA3() {return A3::getA3();} 5368fd743cd3278364c9ec13da437586d989641265Howard Hinnant A4* getA4() {return this;} 5468fd743cd3278364c9ec13da437586d989641265Howard Hinnant}; 5568fd743cd3278364c9ec13da437586d989641265Howard Hinnant 5668fd743cd3278364c9ec13da437586d989641265Howard Hinnantstruct A5 5768fd743cd3278364c9ec13da437586d989641265Howard Hinnant : public A4, 5868fd743cd3278364c9ec13da437586d989641265Howard Hinnant public A3 5968fd743cd3278364c9ec13da437586d989641265Howard Hinnant{ 6068fd743cd3278364c9ec13da437586d989641265Howard Hinnant char _[13489]; 6168fd743cd3278364c9ec13da437586d989641265Howard Hinnant virtual ~A5() {} 6268fd743cd3278364c9ec13da437586d989641265Howard Hinnant 6368fd743cd3278364c9ec13da437586d989641265Howard Hinnant t1::A1* getA1() {return A4::getA1();} 6468fd743cd3278364c9ec13da437586d989641265Howard Hinnant A2* getA2() {return A4::getA2();} 6568fd743cd3278364c9ec13da437586d989641265Howard Hinnant A3* getA3() {return A4::getA3();} 6668fd743cd3278364c9ec13da437586d989641265Howard Hinnant A4* getA4() {return A4::getA4();} 6768fd743cd3278364c9ec13da437586d989641265Howard Hinnant A5* getA5() {return this;} 6868fd743cd3278364c9ec13da437586d989641265Howard Hinnant}; 6968fd743cd3278364c9ec13da437586d989641265Howard Hinnant 7068fd743cd3278364c9ec13da437586d989641265Howard Hinnantvoid test() 7168fd743cd3278364c9ec13da437586d989641265Howard Hinnant{ 7268fd743cd3278364c9ec13da437586d989641265Howard Hinnant A1 a1; 7368fd743cd3278364c9ec13da437586d989641265Howard Hinnant A2 a2; 7468fd743cd3278364c9ec13da437586d989641265Howard Hinnant A3 a3; 7568fd743cd3278364c9ec13da437586d989641265Howard Hinnant A4 a4; 7668fd743cd3278364c9ec13da437586d989641265Howard Hinnant A5 a5; 7768fd743cd3278364c9ec13da437586d989641265Howard Hinnant 7868fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1()); 7968fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a2.getA2()) == 0); 8068fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1()); 8168fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a3.getA2()) == 0); 8268fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1()); 8368fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a4.getA1()) == a4.getA1()); 8468fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a4.getA2()) == 0); 8568fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a4.getA3()) == a4.getA1()); 8668fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a4.getA4()) == a4.getA1()); 8768fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a5.getA1()) == a5.getA1()); 8868fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a5.getA2()) == 0); 8968fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a5.getA3()) == a5.getA1()); 9068fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a5.getA4()) == a5.getA1()); 9168fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a5.getA5()) == a5.getA1()); 9268fd743cd3278364c9ec13da437586d989641265Howard Hinnant 9368fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a1.getA1()) == 0); 9468fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2()); 9568fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a3.getA1()) == 0); 9668fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2()); 9768fd743cd3278364c9ec13da437586d989641265Howard Hinnant// assert(dynamic_cast<A2*>(a3.getA3()) == 0); // cast to private base 9868fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a4.getA1()) == 0); 9968fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a4.getA2()) == a4.getA2()); 10068fd743cd3278364c9ec13da437586d989641265Howard Hinnant// assert(dynamic_cast<A2*>(a4.getA3()) == 0); // cast to private base 10168fd743cd3278364c9ec13da437586d989641265Howard Hinnant// assert(dynamic_cast<A2*>(a4.getA4()) == 0); // cast to ambiguous base 10268fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a5.getA1()) == 0); 10368fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a5.getA2()) == a5.getA2()); 10468fd743cd3278364c9ec13da437586d989641265Howard Hinnant// assert(dynamic_cast<A2*>(a5.getA3()) == 0); // cast to private base 10568fd743cd3278364c9ec13da437586d989641265Howard Hinnant// assert(dynamic_cast<A2*>(a5.getA4()) == 0); // cast to ambiguous base 10668fd743cd3278364c9ec13da437586d989641265Howard Hinnant// assert(dynamic_cast<A2*>(a5.getA5()) == 0); // cast to ambiguous base 10768fd743cd3278364c9ec13da437586d989641265Howard Hinnant 10868fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a1.getA1()) == 0); 10968fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a2.getA2()) == 0); 11068fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3()); 11168fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a3.getA2()) == 0); 11268fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3()); 11368fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a4.getA1()) == a4.getA3()); 11468fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a4.getA2()) == 0); 11568fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a4.getA3()) == a4.getA3()); 11668fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a4.getA4()) == a4.getA3()); 11768fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a5.getA1()) == 0); 11868fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a5.getA2()) == 0); 11968fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a5.getA3()) == a5.getA3()); 12068fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a5.getA4()) == a5.getA3()); 12168fd743cd3278364c9ec13da437586d989641265Howard Hinnant// assert(dynamic_cast<A3*>(a5.getA5()) == 0); // cast to ambiguous base 12268fd743cd3278364c9ec13da437586d989641265Howard Hinnant 12368fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a1.getA1()) == 0); 12468fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a2.getA2()) == 0); 12568fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a3.getA1()) == 0); 12668fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a3.getA2()) == 0); 12768fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a3.getA3()) == 0); 12868fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a4.getA1()) == a4.getA4()); 12968fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a4.getA2()) == 0); 13068fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a4.getA3()) == a4.getA4()); 13168fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a4.getA4()) == a4.getA4()); 13268fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a5.getA1()) == a5.getA4()); 13368fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a5.getA2()) == 0); 13468fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4()); 13568fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a5.getA4()) == a5.getA4()); 13668fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a5.getA5()) == a5.getA4()); 13768fd743cd3278364c9ec13da437586d989641265Howard Hinnant 13868fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a1.getA1()) == 0); 13968fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a2.getA2()) == 0); 14068fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a3.getA1()) == 0); 14168fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a3.getA2()) == 0); 14268fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a3.getA3()) == 0); 14368fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a4.getA1()) == 0); 14468fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a4.getA2()) == 0); 14568fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a4.getA3()) == 0); 14668fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a4.getA4()) == 0); 14768fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a5.getA1()) == a5.getA5()); 14868fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a5.getA2()) == 0); 14968fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5()); 15068fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5()); 15168fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a5.getA5()) == a5.getA5()); 15268fd743cd3278364c9ec13da437586d989641265Howard Hinnant} 15368fd743cd3278364c9ec13da437586d989641265Howard Hinnant 15468fd743cd3278364c9ec13da437586d989641265Howard Hinnant} // t1 15568fd743cd3278364c9ec13da437586d989641265Howard Hinnant 15668fd743cd3278364c9ec13da437586d989641265Howard Hinnantnamespace t2 15768fd743cd3278364c9ec13da437586d989641265Howard Hinnant{ 15868fd743cd3278364c9ec13da437586d989641265Howard Hinnant 15968fd743cd3278364c9ec13da437586d989641265Howard Hinnantstruct A1 16068fd743cd3278364c9ec13da437586d989641265Howard Hinnant{ 16168fd743cd3278364c9ec13da437586d989641265Howard Hinnant char _[43981]; 16268fd743cd3278364c9ec13da437586d989641265Howard Hinnant virtual ~A1() {} 16368fd743cd3278364c9ec13da437586d989641265Howard Hinnant 16468fd743cd3278364c9ec13da437586d989641265Howard Hinnant A1* getA1() {return this;} 16568fd743cd3278364c9ec13da437586d989641265Howard Hinnant}; 16668fd743cd3278364c9ec13da437586d989641265Howard Hinnant 16768fd743cd3278364c9ec13da437586d989641265Howard Hinnantstruct A2 16868fd743cd3278364c9ec13da437586d989641265Howard Hinnant{ 16968fd743cd3278364c9ec13da437586d989641265Howard Hinnant char _[34981]; 17068fd743cd3278364c9ec13da437586d989641265Howard Hinnant virtual ~A2() {} 17168fd743cd3278364c9ec13da437586d989641265Howard Hinnant 17268fd743cd3278364c9ec13da437586d989641265Howard Hinnant A2* getA2() {return this;} 17368fd743cd3278364c9ec13da437586d989641265Howard Hinnant}; 17468fd743cd3278364c9ec13da437586d989641265Howard Hinnant 17568fd743cd3278364c9ec13da437586d989641265Howard Hinnantstruct A3 17668fd743cd3278364c9ec13da437586d989641265Howard Hinnant : public virtual A1, 17768fd743cd3278364c9ec13da437586d989641265Howard Hinnant public A2 17868fd743cd3278364c9ec13da437586d989641265Howard Hinnant{ 17968fd743cd3278364c9ec13da437586d989641265Howard Hinnant char _[93481]; 18068fd743cd3278364c9ec13da437586d989641265Howard Hinnant virtual ~A3() {} 18168fd743cd3278364c9ec13da437586d989641265Howard Hinnant 18268fd743cd3278364c9ec13da437586d989641265Howard Hinnant A1* getA1() {return A1::getA1();} 18368fd743cd3278364c9ec13da437586d989641265Howard Hinnant A2* getA2() {return A2::getA2();} 18468fd743cd3278364c9ec13da437586d989641265Howard Hinnant A3* getA3() {return this;} 18568fd743cd3278364c9ec13da437586d989641265Howard Hinnant}; 18668fd743cd3278364c9ec13da437586d989641265Howard Hinnant 18768fd743cd3278364c9ec13da437586d989641265Howard Hinnantstruct A4 18868fd743cd3278364c9ec13da437586d989641265Howard Hinnant : public A3, 18968fd743cd3278364c9ec13da437586d989641265Howard Hinnant public A2 19068fd743cd3278364c9ec13da437586d989641265Howard Hinnant{ 19168fd743cd3278364c9ec13da437586d989641265Howard Hinnant char _[13489]; 19268fd743cd3278364c9ec13da437586d989641265Howard Hinnant virtual ~A4() {} 19368fd743cd3278364c9ec13da437586d989641265Howard Hinnant 19468fd743cd3278364c9ec13da437586d989641265Howard Hinnant t2::A1* getA1() {return A3::getA1();} 19568fd743cd3278364c9ec13da437586d989641265Howard Hinnant A2* getA2() {return A3::getA2();} 19668fd743cd3278364c9ec13da437586d989641265Howard Hinnant A3* getA3() {return A3::getA3();} 19768fd743cd3278364c9ec13da437586d989641265Howard Hinnant A4* getA4() {return this;} 19868fd743cd3278364c9ec13da437586d989641265Howard Hinnant}; 19968fd743cd3278364c9ec13da437586d989641265Howard Hinnant 20068fd743cd3278364c9ec13da437586d989641265Howard Hinnantstruct A5 20168fd743cd3278364c9ec13da437586d989641265Howard Hinnant : public A4, 20268fd743cd3278364c9ec13da437586d989641265Howard Hinnant public A3 20368fd743cd3278364c9ec13da437586d989641265Howard Hinnant{ 20468fd743cd3278364c9ec13da437586d989641265Howard Hinnant char _[13489]; 20568fd743cd3278364c9ec13da437586d989641265Howard Hinnant virtual ~A5() {} 20668fd743cd3278364c9ec13da437586d989641265Howard Hinnant 20768fd743cd3278364c9ec13da437586d989641265Howard Hinnant t2::A1* getA1() {return A4::getA1();} 20868fd743cd3278364c9ec13da437586d989641265Howard Hinnant A2* getA2() {return A4::getA2();} 20968fd743cd3278364c9ec13da437586d989641265Howard Hinnant A3* getA3() {return A4::getA3();} 21068fd743cd3278364c9ec13da437586d989641265Howard Hinnant A4* getA4() {return A4::getA4();} 21168fd743cd3278364c9ec13da437586d989641265Howard Hinnant A5* getA5() {return this;} 21268fd743cd3278364c9ec13da437586d989641265Howard Hinnant}; 21368fd743cd3278364c9ec13da437586d989641265Howard Hinnant 21468fd743cd3278364c9ec13da437586d989641265Howard Hinnantvoid test() 21568fd743cd3278364c9ec13da437586d989641265Howard Hinnant{ 21668fd743cd3278364c9ec13da437586d989641265Howard Hinnant A1 a1; 21768fd743cd3278364c9ec13da437586d989641265Howard Hinnant A2 a2; 21868fd743cd3278364c9ec13da437586d989641265Howard Hinnant A3 a3; 21968fd743cd3278364c9ec13da437586d989641265Howard Hinnant A4 a4; 22068fd743cd3278364c9ec13da437586d989641265Howard Hinnant A5 a5; 22168fd743cd3278364c9ec13da437586d989641265Howard Hinnant 22268fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1()); 22368fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a2.getA2()) == 0); 22468fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1()); 22568fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA1()); 22668fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1()); 22768fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a4.getA1()) == a4.getA1()); 22868fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a4.getA2()) == a4.getA1()); 22968fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a4.getA3()) == a4.getA1()); 23068fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a4.getA4()) == a4.getA1()); 23168fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a5.getA1()) == a5.getA1()); 23268fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a5.getA2()) == a5.getA1()); 23368fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a5.getA3()) == a5.getA1()); 23468fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a5.getA4()) == a5.getA1()); 23568fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A1*>(a5.getA5()) == a5.getA1()); 23668fd743cd3278364c9ec13da437586d989641265Howard Hinnant 23768fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a1.getA1()) == 0); 23868fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2()); 23968fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a3.getA1()) == a3.getA2()); 24068fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2()); 24168fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2()); 24268fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a4.getA1()) == 0); 24368fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a4.getA2()) == a4.getA2()); 24468fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a4.getA3()) == a4.getA2()); 24568fd743cd3278364c9ec13da437586d989641265Howard Hinnant// assert(dynamic_cast<A2*>(a4.getA4()) == 0); // cast to ambiguous base 24668fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a5.getA1()) == 0); 24768fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a5.getA2()) == a5.getA2()); 24868fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A2*>(a5.getA3()) == a5.getA2()); 24968fd743cd3278364c9ec13da437586d989641265Howard Hinnant// assert(dynamic_cast<A2*>(a5.getA4()) == 0); // cast to ambiguous base 25068fd743cd3278364c9ec13da437586d989641265Howard Hinnant// assert(dynamic_cast<A2*>(a5.getA5()) == 0); // cast to ambiguous base 25168fd743cd3278364c9ec13da437586d989641265Howard Hinnant 25268fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a1.getA1()) == 0); 25368fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a2.getA2()) == 0); 25468fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3()); 25568fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3()); 25668fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3()); 25768fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a4.getA1()) == a4.getA3()); 25868fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a4.getA2()) == a4.getA3()); 25968fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a4.getA3()) == a4.getA3()); 26068fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a4.getA4()) == a4.getA3()); 26168fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a5.getA1()) == 0); 26268fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3()); 26368fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a5.getA3()) == a5.getA3()); 26468fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A3*>(a5.getA4()) == a5.getA3()); 26568fd743cd3278364c9ec13da437586d989641265Howard Hinnant// assert(dynamic_cast<A3*>(a5.getA5()) == 0); // cast to ambiguous base 26668fd743cd3278364c9ec13da437586d989641265Howard Hinnant 26768fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a1.getA1()) == 0); 26868fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a2.getA2()) == 0); 26968fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a3.getA1()) == 0); 27068fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a3.getA2()) == 0); 27168fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a3.getA3()) == 0); 27268fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a4.getA1()) == a4.getA4()); 27368fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4()); 27468fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a4.getA3()) == a4.getA4()); 27568fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a4.getA4()) == a4.getA4()); 27668fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a5.getA1()) == a5.getA4()); 27768fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a5.getA2()) == a5.getA4()); 27868fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4()); 27968fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a5.getA4()) == a5.getA4()); 28068fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A4*>(a5.getA5()) == a5.getA4()); 28168fd743cd3278364c9ec13da437586d989641265Howard Hinnant 28268fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a1.getA1()) == 0); 28368fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a2.getA2()) == 0); 28468fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a3.getA1()) == 0); 28568fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a3.getA2()) == 0); 28668fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a3.getA3()) == 0); 28768fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a4.getA1()) == 0); 28868fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a4.getA2()) == 0); 28968fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a4.getA3()) == 0); 29068fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a4.getA4()) == 0); 29168fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a5.getA1()) == a5.getA5()); 29268fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a5.getA2()) == a5.getA5()); 29368fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5()); 29468fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5()); 29568fd743cd3278364c9ec13da437586d989641265Howard Hinnant assert(dynamic_cast<A5*>(a5.getA5()) == a5.getA5()); 29668fd743cd3278364c9ec13da437586d989641265Howard Hinnant} 29768fd743cd3278364c9ec13da437586d989641265Howard Hinnant 29868fd743cd3278364c9ec13da437586d989641265Howard Hinnant} // t2 29968fd743cd3278364c9ec13da437586d989641265Howard Hinnant 3001309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantnamespace t3 3011309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 3021309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 3031309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A1 3041309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 3051309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[43981]; 3061309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A1() {} 3071309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 3081309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return this;} 3091309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 3101309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 3111309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A2 3121309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 3131309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[34981]; 3141309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A2() {} 3151309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 3161309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return this;} 3171309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 3181309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 3191309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A3 3201309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : public A1, 3211309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant public virtual A2 3221309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 3231309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[93481]; 3241309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A3() {} 3251309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 3261309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return A1::getA1();} 3271309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A2::getA2();} 3281309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3* getA3() {return this;} 3291309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 3301309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 3311309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A4 3321309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : public A1, 3331309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant public virtual A2 3341309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 3351309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[13489]; 3361309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A4() {} 3371309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 3381309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return A1::getA1();} 3391309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A2::getA2();} 3401309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4* getA4() {return this;} 3411309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 3421309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 3431309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A5 3441309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : public A3, 3451309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant public A4 3461309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 3471309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[41389]; 3481309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A5() {} 3491309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 3501309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA14() {return A4::getA1();} 3511309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA13() {return A3::getA1();} 3521309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A4::getA2();} 3531309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3* getA3() {return A3::getA3();} 3541309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4* getA4() {return A4::getA4();} 3551309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A5* getA5() {return this;} 3561309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 3571309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 3581309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantvoid test() 3591309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 3601309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1 a1; 3611309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2 a2; 3621309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3 a3; 3631309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4 a4; 3641309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A5 a5; 3651309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 3661309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1()); 3671309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a2.getA2()) == 0); 3681309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1()); 3691309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA1()); 3701309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1()); 3711309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA1()) == a4.getA1()); 3721309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA2()) == a4.getA1()); 3731309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA4()) == a4.getA1()); 3741309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA14()) == a5.getA14()); 3751309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA13()) == a5.getA13()); 3761309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA2()) == 0); 3771309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA3()) == a5.getA13()); 3781309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA4()) == a5.getA14()); 3791309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 3801309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a1.getA1()) == 0); 3811309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2()); 3821309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA1()) == a3.getA2()); 3831309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2()); 3841309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2()); 3851309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA1()) == a4.getA2()); 3861309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA2()) == a4.getA2()); 3871309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA4()) == a4.getA2()); 3881309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA14()) == a5.getA2()); 3891309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA13()) == a5.getA2()); 3901309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA2()) == a5.getA2()); 3911309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA3()) == a5.getA2()); 3921309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA4()) == a5.getA2()); 3931309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA5()) == a5.getA2()); 3941309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 3951309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a1.getA1()) == 0); 3961309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a2.getA2()) == 0); 3971309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3()); 3981309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3()); 3991309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3()); 4001309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA1()) == 0); 4011309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA2()) == 0); 4021309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA4()) == 0); 4031309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA14()) == a5.getA3()); 4041309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA13()) == a5.getA3()); 4051309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3()); 4061309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA3()) == a5.getA3()); 4071309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA4()) == a5.getA3()); 4081309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA5()) == a5.getA3()); 4091309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 4101309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a1.getA1()) == 0); 4111309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a2.getA2()) == 0); 4121309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA1()) == 0); 4131309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA2()) == 0); 4141309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA3()) == 0); 4151309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA1()) == a4.getA4()); 4161309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4()); 4171309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA4()) == a4.getA4()); 4181309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA14()) == a5.getA4()); 4191309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA13()) == a5.getA4()); 4201309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA2()) == a5.getA4()); 4211309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4()); 4221309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA4()) == a5.getA4()); 4231309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA5()) == a5.getA4()); 4241309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 4251309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a1.getA1()) == 0); 4261309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a2.getA2()) == 0); 4271309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA1()) == 0); 4281309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA2()) == 0); 4291309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA3()) == 0); 4301309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA1()) == 0); 4311309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA2()) == 0); 4321309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA4()) == 0); 4331309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA14()) == a5.getA5()); 4341309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA13()) == a5.getA5()); 4351309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA2()) == a5.getA5()); 4361309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5()); 4371309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5()); 4381309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA5()) == a5.getA5()); 4391309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant} 4401309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 4411309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant} // t3 4421309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 4431309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantnamespace t4 4441309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 4451309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 4461309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A1 4471309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 4481309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[43981]; 4491309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A1() {} 4501309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 4511309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return this;} 4521309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 4531309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 4541309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A2 4551309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 4561309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[34981]; 4571309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A2() {} 4581309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 4591309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return this;} 4601309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 4611309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 4621309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A3 4631309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : protected A1, 4641309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant public virtual A2 4651309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 4661309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[93481]; 4671309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A3() {} 4681309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 4691309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return A1::getA1();} 4701309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A2::getA2();} 4711309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3* getA3() {return this;} 4721309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 4731309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 4741309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A4 4751309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : public A1, 4761309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant public virtual A2 4771309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 4781309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[13489]; 4791309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A4() {} 4801309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 4811309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return A1::getA1();} 4821309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A2::getA2();} 4831309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4* getA4() {return this;} 4841309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 4851309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 4861309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A5 4871309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : public A3, 4881309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant public A4 4891309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 4901309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[41389]; 4911309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A5() {} 4921309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 4931309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA14() {return A4::getA1();} 4941309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA13() {return A3::getA1();} 4951309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A4::getA2();} 4961309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3* getA3() {return A3::getA3();} 4971309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4* getA4() {return A4::getA4();} 4981309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A5* getA5() {return this;} 4991309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 5001309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 5011309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantvoid test() 5021309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 5031309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1 a1; 5041309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2 a2; 5051309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3 a3; 5061309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4 a4; 5071309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A5 a5; 5081309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 5091309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1()); 5101309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a2.getA2()) == 0); 5111309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1()); 5121309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA2()) == 0); 5131309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant// assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1()); // cast to protected base 5141309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA1()) == a4.getA1()); 5151309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA2()) == a4.getA1()); 5161309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA4()) == a4.getA1()); 5171309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA14()) == a5.getA14()); 5181309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA13()) == a5.getA13()); 5191309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA2()) == 0); 5201309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant// assert(dynamic_cast<A1*>(a5.getA3()) == a5.getA13()); // cast to protected base 5211309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA4()) == a5.getA14()); 5221309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 5231309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a1.getA1()) == 0); 5241309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2()); 5251309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA1()) == 0); 5261309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2()); 5271309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2()); 5281309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA1()) == a4.getA2()); 5291309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA2()) == a4.getA2()); 5301309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA4()) == a4.getA2()); 5311309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA14()) == a5.getA2()); 5321309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA13()) == 0); 5331309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA2()) == a5.getA2()); 5341309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA3()) == a5.getA2()); 5351309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA4()) == a5.getA2()); 5361309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA5()) == a5.getA2()); 5371309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 5381309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a1.getA1()) == 0); 5391309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a2.getA2()) == 0); 5401309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA1()) == 0); 5411309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3()); 5421309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3()); 5431309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA1()) == 0); 5441309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA2()) == 0); 5451309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA4()) == 0); 5461309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA14()) == a5.getA3()); 5471309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA13()) == 0); 5481309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3()); 5491309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA3()) == a5.getA3()); 5501309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA4()) == a5.getA3()); 5511309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA5()) == a5.getA3()); 5521309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 5531309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a1.getA1()) == 0); 5541309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a2.getA2()) == 0); 5551309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA1()) == 0); 5561309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA2()) == 0); 5571309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA3()) == 0); 5581309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA1()) == a4.getA4()); 5591309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4()); 5601309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA4()) == a4.getA4()); 5611309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA14()) == a5.getA4()); 5621309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA13()) == 0); 5631309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA2()) == a5.getA4()); 5641309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4()); 5651309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA4()) == a5.getA4()); 5661309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA5()) == a5.getA4()); 5671309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 5681309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a1.getA1()) == 0); 5691309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a2.getA2()) == 0); 5701309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA1()) == 0); 5711309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA2()) == 0); 5721309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA3()) == 0); 5731309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA1()) == 0); 5741309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA2()) == 0); 5751309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA4()) == 0); 5761309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA14()) == a5.getA5()); 5771309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA13()) == 0); 5781309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA2()) == a5.getA5()); 5791309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5()); 5801309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5()); 5811309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA5()) == a5.getA5()); 5821309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant} 5831309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 5841309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant} // t4 5851309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 5861309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantnamespace t5 5871309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 5881309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 5891309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A1 5901309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 5911309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[43981]; 5921309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A1() {} 5931309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 5941309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return this;} 5951309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 5961309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 5971309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A2 5981309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 5991309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[34981]; 6001309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A2() {} 6011309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 6021309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return this;} 6031309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 6041309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 6051309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A3 6061309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : public A1, 6071309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant protected virtual A2 6081309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 6091309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[93481]; 6101309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A3() {} 6111309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 6121309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return A1::getA1();} 6131309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A2::getA2();} 6141309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3* getA3() {return this;} 6151309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 6161309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 6171309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A4 6181309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : public A1, 6191309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant public virtual A2 6201309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 6211309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[13489]; 6221309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A4() {} 6231309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 6241309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return A1::getA1();} 6251309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A2::getA2();} 6261309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4* getA4() {return this;} 6271309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 6281309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 6291309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A5 6301309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : public A3, 6311309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant public A4 6321309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 6331309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[41389]; 6341309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A5() {} 6351309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 6361309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA14() {return A4::getA1();} 6371309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA13() {return A3::getA1();} 6381309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A4::getA2();} 6391309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3* getA3() {return A3::getA3();} 6401309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4* getA4() {return A4::getA4();} 6411309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A5* getA5() {return this;} 6421309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 6431309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 6441309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantvoid test() 6451309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 6461309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1 a1; 6471309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2 a2; 6481309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3 a3; 6491309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4 a4; 6501309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A5 a5; 6511309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 6521309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1()); 6531309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a2.getA2()) == 0); 6541309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1()); 6551309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA2()) == 0); 6561309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1()); 6571309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA1()) == a4.getA1()); 6581309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA2()) == a4.getA1()); 6591309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA4()) == a4.getA1()); 6601309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA14()) == a5.getA14()); 6611309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA13()) == a5.getA13()); 6621309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA2()) == 0); 6631309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA3()) == a5.getA13()); 6641309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA4()) == a5.getA14()); 6651309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 6661309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a1.getA1()) == 0); 6671309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2()); 6681309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA1()) == 0); 6691309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2()); 6701309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant// assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2()); // cast to protected base 6711309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA1()) == a4.getA2()); 6721309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA2()) == a4.getA2()); 6731309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA4()) == a4.getA2()); 6741309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA14()) == a5.getA2()); 6751309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA13()) == a5.getA2()); 6761309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA2()) == a5.getA2()); 6771309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant// assert(dynamic_cast<A2*>(a5.getA3()) == a5.getA2()); // cast to protected base 6781309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA4()) == a5.getA2()); 6791309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA5()) == a5.getA2()); 6801309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 6811309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a1.getA1()) == 0); 6821309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a2.getA2()) == 0); 6831309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3()); 6841309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA2()) == 0); 6851309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3()); 6861309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA1()) == 0); 6871309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA2()) == 0); 6881309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA4()) == 0); 6891309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA14()) == a5.getA3()); 6901309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA13()) == a5.getA3()); 6911309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3()); 6921309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA3()) == a5.getA3()); 6931309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA4()) == a5.getA3()); 6941309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA5()) == a5.getA3()); 6951309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 6961309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a1.getA1()) == 0); 6971309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a2.getA2()) == 0); 6981309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA1()) == 0); 6991309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA2()) == 0); 7001309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA3()) == 0); 7011309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA1()) == a4.getA4()); 7021309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4()); 7031309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA4()) == a4.getA4()); 7041309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA14()) == a5.getA4()); 7051309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA13()) == a5.getA4()); 7061309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA2()) == a5.getA4()); 7071309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4()); 7081309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA4()) == a5.getA4()); 7091309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA5()) == a5.getA4()); 7101309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 7111309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a1.getA1()) == 0); 7121309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a2.getA2()) == 0); 7131309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA1()) == 0); 7141309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA2()) == 0); 7151309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA3()) == 0); 7161309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA1()) == 0); 7171309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA2()) == 0); 7181309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA4()) == 0); 7191309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA14()) == a5.getA5()); 7201309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA13()) == a5.getA5()); 7211309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA2()) == a5.getA5()); 7221309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5()); 7231309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5()); 7241309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA5()) == a5.getA5()); 7251309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant} 7261309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 7271309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant} // t5 7281309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 7291309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantnamespace t6 7301309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 7311309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 7321309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A1 7331309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 7341309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[43981]; 7351309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A1() {} 7361309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 7371309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return this;} 7381309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 7391309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 7401309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A2 7411309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 7421309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[34981]; 7431309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A2() {} 7441309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 7451309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return this;} 7461309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 7471309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 7481309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A3 7491309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : public A1, 7501309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant public virtual A2 7511309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 7521309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[93481]; 7531309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A3() {} 7541309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 7551309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return A1::getA1();} 7561309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A2::getA2();} 7571309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3* getA3() {return this;} 7581309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 7591309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 7601309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A4 7611309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : protected A1, 7621309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant public virtual A2 7631309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 7641309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[13489]; 7651309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A4() {} 7661309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 7671309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return A1::getA1();} 7681309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A2::getA2();} 7691309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4* getA4() {return this;} 7701309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 7711309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 7721309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A5 7731309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : public A3, 7741309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant public A4 7751309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 7761309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[41389]; 7771309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A5() {} 7781309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 7791309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA14() {return A4::getA1();} 7801309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA13() {return A3::getA1();} 7811309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A4::getA2();} 7821309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3* getA3() {return A3::getA3();} 7831309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4* getA4() {return A4::getA4();} 7841309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A5* getA5() {return this;} 7851309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 7861309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 7871309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantvoid test() 7881309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 7891309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1 a1; 7901309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2 a2; 7911309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3 a3; 7921309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4 a4; 7931309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A5 a5; 7941309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 7951309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1()); 7961309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a2.getA2()) == 0); 7971309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1()); 7981309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA1()); 7991309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1()); 8001309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA1()) == a4.getA1()); 8011309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA2()) == 0); 8021309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant// assert(dynamic_cast<A1*>(a4.getA4()) == a4.getA1()); // cast to protected base 8031309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA14()) == a5.getA14()); 8041309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA13()) == a5.getA13()); 8051309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA2()) == 0); 8061309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA3()) == a5.getA13()); 8071309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant// assert(dynamic_cast<A1*>(a5.getA4()) == a5.getA14()); // cast to protected base 8081309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 8091309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a1.getA1()) == 0); 8101309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2()); 8111309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA1()) == a3.getA2()); 8121309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2()); 8131309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2()); 8141309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA1()) == 0); 8151309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA2()) == a4.getA2()); 8161309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA4()) == a4.getA2()); 8171309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA14()) == 0); 8181309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA13()) == a5.getA2()); 8191309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA2()) == a5.getA2()); 8201309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA3()) == a5.getA2()); 8211309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA4()) == a5.getA2()); 8221309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA5()) == a5.getA2()); 8231309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 8241309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a1.getA1()) == 0); 8251309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a2.getA2()) == 0); 8261309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3()); 8271309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3()); 8281309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3()); 8291309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA1()) == 0); 8301309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA2()) == 0); 8311309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA4()) == 0); 8321309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA14()) == 0); 8331309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA13()) == a5.getA3()); 8341309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3()); 8351309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA3()) == a5.getA3()); 8361309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA4()) == a5.getA3()); 8371309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA5()) == a5.getA3()); 8381309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 8391309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a1.getA1()) == 0); 8401309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a2.getA2()) == 0); 8411309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA1()) == 0); 8421309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA2()) == 0); 8431309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA3()) == 0); 8441309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA1()) == 0); 8451309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4()); 8461309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA4()) == a4.getA4()); 8471309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA14()) == 0); 8481309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA13()) == a5.getA4()); 8491309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA2()) == a5.getA4()); 8501309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4()); 8511309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA4()) == a5.getA4()); 8521309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA5()) == a5.getA4()); 8531309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 8541309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a1.getA1()) == 0); 8551309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a2.getA2()) == 0); 8561309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA1()) == 0); 8571309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA2()) == 0); 8581309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA3()) == 0); 8591309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA1()) == 0); 8601309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA2()) == 0); 8611309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA4()) == 0); 8621309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA14()) == 0); 8631309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA13()) == a5.getA5()); 8641309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA2()) == a5.getA5()); 8651309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5()); 8661309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5()); 8671309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA5()) == a5.getA5()); 8681309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant} 8691309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 8701309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant} // t6 8711309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 8721309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantnamespace t7 8731309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 8741309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 8751309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A1 8761309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 8771309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[43981]; 8781309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A1() {} 8791309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 8801309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return this;} 8811309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 8821309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 8831309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A2 8841309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 8851309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[34981]; 8861309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A2() {} 8871309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 8881309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return this;} 8891309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 8901309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 8911309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A3 8921309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : public A1, 8931309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant public virtual A2 8941309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 8951309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[93481]; 8961309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A3() {} 8971309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 8981309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return A1::getA1();} 8991309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A2::getA2();} 9001309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3* getA3() {return this;} 9011309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 9021309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 9031309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A4 9041309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : public A1, 9051309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant protected virtual A2 9061309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 9071309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[13489]; 9081309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A4() {} 9091309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 9101309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return A1::getA1();} 9111309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A2::getA2();} 9121309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4* getA4() {return this;} 9131309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 9141309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 9151309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A5 9161309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : public A3, 9171309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant public A4 9181309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 9191309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[41389]; 9201309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A5() {} 9211309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 9221309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA14() {return A4::getA1();} 9231309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA13() {return A3::getA1();} 9241309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A4::getA2();} 9251309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3* getA3() {return A3::getA3();} 9261309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4* getA4() {return A4::getA4();} 9271309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A5* getA5() {return this;} 9281309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 9291309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 9301309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantvoid test() 9311309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 9321309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1 a1; 9331309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2 a2; 9341309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3 a3; 9351309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4 a4; 9361309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A5 a5; 9371309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 9381309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1()); 9391309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a2.getA2()) == 0); 9401309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1()); 9411309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA1()); 9421309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1()); 9431309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA1()) == a4.getA1()); 9441309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA2()) == 0); 9451309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA4()) == a4.getA1()); 9461309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA14()) == a5.getA14()); 9471309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA13()) == a5.getA13()); 9481309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA2()) == 0); 9491309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA3()) == a5.getA13()); 9501309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA4()) == a5.getA14()); 9511309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 9521309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a1.getA1()) == 0); 9531309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2()); 9541309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA1()) == a3.getA2()); 9551309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2()); 9561309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2()); 9571309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA1()) == 0); 9581309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA2()) == a4.getA2()); 9591309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant// assert(dynamic_cast<A2*>(a4.getA4()) == a4.getA2()); // cast to protected base 9601309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA14()) == a5.getA2()); 9611309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA13()) == a5.getA2()); 9621309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA2()) == a5.getA2()); 9631309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA3()) == a5.getA2()); 9641309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant// assert(dynamic_cast<A2*>(a5.getA4()) == a5.getA2()); // cast to protected base 9651309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA5()) == a5.getA2()); 9661309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 9671309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a1.getA1()) == 0); 9681309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a2.getA2()) == 0); 9691309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3()); 9701309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3()); 9711309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3()); 9721309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA1()) == 0); 9731309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA2()) == 0); 9741309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA4()) == 0); 9751309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA14()) == a5.getA3()); 9761309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA13()) == a5.getA3()); 9771309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3()); 9781309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA3()) == a5.getA3()); 9791309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA4()) == a5.getA3()); 9801309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA5()) == a5.getA3()); 9811309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 9821309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a1.getA1()) == 0); 9831309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a2.getA2()) == 0); 9841309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA1()) == 0); 9851309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA2()) == 0); 9861309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA3()) == 0); 9871309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA1()) == a4.getA4()); 9881309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA2()) == 0); 9891309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA4()) == a4.getA4()); 9901309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA14()) == a5.getA4()); 9911309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA13()) == a5.getA4()); 9921309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA2()) == a5.getA4()); 9931309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4()); 9941309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA4()) == a5.getA4()); 9951309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA5()) == a5.getA4()); 9961309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 9971309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a1.getA1()) == 0); 9981309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a2.getA2()) == 0); 9991309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA1()) == 0); 10001309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA2()) == 0); 10011309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA3()) == 0); 10021309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA1()) == 0); 10031309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA2()) == 0); 10041309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA4()) == 0); 10051309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA14()) == a5.getA5()); 10061309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA13()) == a5.getA5()); 10071309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA2()) == a5.getA5()); 10081309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5()); 10091309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5()); 10101309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA5()) == a5.getA5()); 10111309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant} 10121309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 10131309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant} // t7 10141309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 10151309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantnamespace t8 10161309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 10171309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 10181309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A1 10191309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 10201309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[43981]; 10211309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A1() {} 10221309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 10231309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return this;} 10241309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 10251309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 10261309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A2 10271309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 10281309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[34981]; 10291309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A2() {} 10301309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 10311309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return this;} 10321309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 10331309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 10341309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A3 10351309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : public A1, 10361309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant public virtual A2 10371309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 10381309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[93481]; 10391309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A3() {} 10401309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 10411309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return A1::getA1();} 10421309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A2::getA2();} 10431309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3* getA3() {return this;} 10441309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 10451309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 10461309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A4 10471309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : public A1, 10481309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant public virtual A2 10491309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 10501309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[13489]; 10511309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A4() {} 10521309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 10531309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return A1::getA1();} 10541309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A2::getA2();} 10551309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4* getA4() {return this;} 10561309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 10571309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 10581309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A5 10591309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : protected A3, 10601309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant public A4 10611309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 10621309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[41389]; 10631309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A5() {} 10641309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 10651309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA14() {return A4::getA1();} 10661309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA13() {return A3::getA1();} 10671309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A4::getA2();} 10681309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3* getA3() {return A3::getA3();} 10691309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4* getA4() {return A4::getA4();} 10701309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A5* getA5() {return this;} 10711309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 10721309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 10731309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantvoid test() 10741309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 10751309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1 a1; 10761309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2 a2; 10771309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3 a3; 10781309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4 a4; 10791309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A5 a5; 10801309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 10811309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1()); 10821309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a2.getA2()) == 0); 10831309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1()); 10841309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA1()); 10851309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1()); 10861309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA1()) == a4.getA1()); 10871309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA2()) == a4.getA1()); 10881309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA4()) == a4.getA1()); 10891309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA14()) == a5.getA14()); 10901309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA13()) == a5.getA13()); 10911309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA2()) == 0); 10921309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA3()) == a5.getA13()); 10931309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA4()) == a5.getA14()); 10941309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 10951309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a1.getA1()) == 0); 10961309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2()); 10971309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA1()) == a3.getA2()); 10981309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2()); 10991309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2()); 11001309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA1()) == a4.getA2()); 11011309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA2()) == a4.getA2()); 11021309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA4()) == a4.getA2()); 11031309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA14()) == a5.getA2()); 11041309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA13()) == 0); 11051309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA2()) == a5.getA2()); 11061309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA3()) == a5.getA2()); 11071309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA4()) == a5.getA2()); 11081309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA5()) == a5.getA2()); 11091309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 11101309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a1.getA1()) == 0); 11111309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a2.getA2()) == 0); 11121309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3()); 11131309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3()); 11141309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3()); 11151309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA1()) == 0); 11161309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA2()) == 0); 11171309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA4()) == 0); 11181309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA14()) == 0); 11191309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA13()) == a5.getA3()); 11201309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3()); 11211309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA3()) == a5.getA3()); 11221309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA4()) == 0); 11231309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant// assert(dynamic_cast<A3*>(a5.getA5()) == a5.getA3()); // cast to protected base 11241309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 11251309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a1.getA1()) == 0); 11261309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a2.getA2()) == 0); 11271309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA1()) == 0); 11281309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA2()) == 0); 11291309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA3()) == 0); 11301309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA1()) == a4.getA4()); 11311309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4()); 11321309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA4()) == a4.getA4()); 11331309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA14()) == a5.getA4()); 11341309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA13()) == 0); 11351309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA2()) == a5.getA4()); 11361309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA3()) == 0); 11371309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA4()) == a5.getA4()); 11381309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA5()) == a5.getA4()); 11391309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 11401309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a1.getA1()) == 0); 11411309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a2.getA2()) == 0); 11421309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA1()) == 0); 11431309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA2()) == 0); 11441309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA3()) == 0); 11451309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA1()) == 0); 11461309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA2()) == 0); 11471309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA4()) == 0); 11481309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA14()) == a5.getA5()); 11491309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA13()) == 0); 11501309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA2()) == a5.getA5()); 11511309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA3()) == 0); 11521309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5()); 11531309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA5()) == a5.getA5()); 11541309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant} 11551309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 11561309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant} // t8 11571309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 11581309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantnamespace t9 11591309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 11601309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 11611309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A1 11621309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 11631309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[43981]; 11641309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A1() {} 11651309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 11661309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return this;} 11671309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 11681309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 11691309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A2 11701309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 11711309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[34981]; 11721309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A2() {} 11731309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 11741309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return this;} 11751309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 11761309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 11771309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A3 11781309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : public A1, 11791309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant public virtual A2 11801309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 11811309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[93481]; 11821309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A3() {} 11831309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 11841309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return A1::getA1();} 11851309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A2::getA2();} 11861309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3* getA3() {return this;} 11871309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 11881309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 11891309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A4 11901309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : public A1, 11911309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant public virtual A2 11921309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 11931309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[13489]; 11941309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A4() {} 11951309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 11961309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA1() {return A1::getA1();} 11971309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A2::getA2();} 11981309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4* getA4() {return this;} 11991309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 12001309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 12011309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantstruct A5 12021309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant : public A3, 12031309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant protected A4 12041309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 12051309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant char _[41389]; 12061309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant virtual ~A5() {} 12071309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 12081309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA14() {return A4::getA1();} 12091309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1* getA13() {return A3::getA1();} 12101309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2* getA2() {return A4::getA2();} 12111309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3* getA3() {return A3::getA3();} 12121309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4* getA4() {return A4::getA4();} 12131309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A5* getA5() {return this;} 12141309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant}; 12151309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 12161309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnantvoid test() 12171309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant{ 12181309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A1 a1; 12191309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A2 a2; 12201309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A3 a3; 12211309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A4 a4; 12221309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant A5 a5; 12231309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 12241309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a1.getA1()) == a1.getA1()); 12251309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a2.getA2()) == 0); 12261309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA1()) == a3.getA1()); 12271309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA2()) == a3.getA1()); 12281309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a3.getA3()) == a3.getA1()); 12291309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA1()) == a4.getA1()); 12301309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA2()) == a4.getA1()); 12311309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a4.getA4()) == a4.getA1()); 12321309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA14()) == a5.getA14()); 12331309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA13()) == a5.getA13()); 12341309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA2()) == 0); 12351309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA3()) == a5.getA13()); 12361309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A1*>(a5.getA4()) == a5.getA14()); 12371309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 12381309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a1.getA1()) == 0); 12391309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a2.getA2()) == a2.getA2()); 12401309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA1()) == a3.getA2()); 12411309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA2()) == a3.getA2()); 12421309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a3.getA3()) == a3.getA2()); 12431309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA1()) == a4.getA2()); 12441309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA2()) == a4.getA2()); 12451309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a4.getA4()) == a4.getA2()); 12461309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA14()) == 0); 12471309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA13()) == a5.getA2()); 12481309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA2()) == a5.getA2()); 12491309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA3()) == a5.getA2()); 12501309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA4()) == a5.getA2()); 12511309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A2*>(a5.getA5()) == a5.getA2()); 12521309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 12531309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a1.getA1()) == 0); 12541309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a2.getA2()) == 0); 12551309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA1()) == a3.getA3()); 12561309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3()); 12571309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a3.getA3()) == a3.getA3()); 12581309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA1()) == 0); 12591309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA2()) == 0); 12601309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a4.getA4()) == 0); 12611309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA14()) == 0); 12621309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA13()) == a5.getA3()); 12631309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3()); 12641309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA3()) == a5.getA3()); 12651309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA4()) == 0); 12661309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A3*>(a5.getA5()) == a5.getA3()); 12671309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 12681309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a1.getA1()) == 0); 12691309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a2.getA2()) == 0); 12701309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA1()) == 0); 12711309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA2()) == 0); 12721309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a3.getA3()) == 0); 12731309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA1()) == a4.getA4()); 12741309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4()); 12751309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a4.getA4()) == a4.getA4()); 12761309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA14()) == a5.getA4()); 12771309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA13()) == 0); 12781309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA2()) == a5.getA4()); 12791309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA3()) == 0); 12801309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A4*>(a5.getA4()) == a5.getA4()); 12811309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant// assert(dynamic_cast<A4*>(a5.getA5()) == a5.getA4()); // cast to protected base 12821309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 12831309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a1.getA1()) == 0); 12841309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a2.getA2()) == 0); 12851309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA1()) == 0); 12861309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA2()) == 0); 12871309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a3.getA3()) == 0); 12881309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA1()) == 0); 12891309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA2()) == 0); 12901309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a4.getA4()) == 0); 12911309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA14()) == 0); 12921309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA13()) == a5.getA5()); 12931309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA2()) == a5.getA5()); 12941309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5()); 12951309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA4()) == 0); 12961309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant assert(dynamic_cast<A5*>(a5.getA5()) == a5.getA5()); 12971309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant} 12981309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 12991309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant} // t9 13001309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant 1301cc614df38c199d9781a6dea123e714970e82711fHoward Hinnant#include <chrono> 1302cc614df38c199d9781a6dea123e714970e82711fHoward Hinnant#include <iostream> 1303cc614df38c199d9781a6dea123e714970e82711fHoward Hinnant 130468fd743cd3278364c9ec13da437586d989641265Howard Hinnantint main() 130568fd743cd3278364c9ec13da437586d989641265Howard Hinnant{ 1306cc614df38c199d9781a6dea123e714970e82711fHoward Hinnant typedef std::chrono::high_resolution_clock Clock; 1307cc614df38c199d9781a6dea123e714970e82711fHoward Hinnant typedef Clock::time_point time_point; 1308cc614df38c199d9781a6dea123e714970e82711fHoward Hinnant typedef std::chrono::duration<double, std::micro> NS; 1309cc614df38c199d9781a6dea123e714970e82711fHoward Hinnant time_point t0 = Clock::now(); 131068fd743cd3278364c9ec13da437586d989641265Howard Hinnant t1::test(); 131168fd743cd3278364c9ec13da437586d989641265Howard Hinnant t2::test(); 13121309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant t3::test(); 13131309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant t4::test(); 13141309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant t5::test(); 13151309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant t6::test(); 13161309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant t7::test(); 13171309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant t8::test(); 13181309366d3676ca5a34bea0388ad2d2dd5701dc9bHoward Hinnant t9::test(); 1319cc614df38c199d9781a6dea123e714970e82711fHoward Hinnant time_point t1 = Clock::now(); 1320cc614df38c199d9781a6dea123e714970e82711fHoward Hinnant std::cout << NS(t1-t0).count() << " microseconds\n"; 132168fd743cd3278364c9ec13da437586d989641265Howard Hinnant} 1322