blob: 8bf0ba50ca84999862db929bfb3e7f50370837fe [file] [log] [blame]
Howard Hinnant13093662012-01-16 00:13:46 +00001//===------------------------- dynamic_cast14.cpp -------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include <cassert>
Eric Fiselier30ad8292014-11-24 22:38:57 +000011#include "support/timer.hpp"
Howard Hinnant13093662012-01-16 00:13:46 +000012
13namespace t1
14{
15
16struct A1
17{
18 char _[43981];
19 virtual ~A1() {}
20
21 A1* getA1() {return this;}
22};
23
24struct A2
25{
26 char _[34981];
27 virtual ~A2() {}
28
29 A2* getA2() {return this;}
30};
31
32struct A3
33 : public A1,
34 public virtual A2
35{
36 char _[93481];
37 virtual ~A3() {}
38
39 A1* getA1_3() {return A1::getA1();}
40 A2* getA2() {return A2::getA2();}
41 A3* getA3() {return this;}
42};
43
44struct A4
45 : public virtual A2,
46 public A1
47{
48 char _[13489];
49 virtual ~A4() {}
50
51 A1* getA1_4() {return A1::getA1();}
52 A2* getA2() {return A2::getA2();}
53 A4* getA4() {return this;}
54};
55
56struct A5
57 : public A3,
58 public A4
59{
60 char _[13489];
61 virtual ~A5() {}
62
63 A1* getA1_3() {return A3::getA1();}
64 A1* getA1_4() {return A4::getA1();}
65 A2* getA2() {return A3::getA2();}
66 A3* getA3() {return A3::getA3();}
67 A4* getA4() {return A4::getA4();}
68 A5* getA5() {return this;}
69};
70
71struct A6
72 : public A1
73{
74 char _[81349];
75 virtual ~A6() {}
76
77 A1* getA1_6() {return A1::getA1();}
78 A6* getA6() {return this;}
79};
80
81struct A7
82 : public A5,
83 public A6
84{
85 char _[34819];
86 virtual ~A7() {}
87
88 A1* getA1_3() {return A5::getA1_3();}
89 A1* getA1_4() {return A5::getA1_4();}
90 A1* getA1_6() {return A6::getA1_6();}
91 A2* getA2() {return A5::getA2();}
92 A3* getA3() {return A5::getA3();}
93 A4* getA4() {return A5::getA4();}
94 A5* getA5() {return A5::getA5();}
95 A6* getA6() {return A6::getA6();}
96 A7* getA7() {return this;}
97};
98
99struct A8
100 : public A7
101{
102 char _[3489];
103 virtual ~A8() {}
104
105 A1* getA1_3() {return A7::getA1_3();}
106 A1* getA1_4() {return A7::getA1_4();}
107 A1* getA1_6() {return A7::getA1_6();}
108 A2* getA2() {return A7::getA2();}
109 A3* getA3() {return A7::getA3();}
110 A4* getA4() {return A7::getA4();}
111 A5* getA5() {return A7::getA5();}
112 A6* getA6() {return A7::getA6();}
113 A7* getA7() {return A7::getA7();}
114 A8* getA8() {return this;}
115};
116
117struct A9
118 : public A1
119{
120 char _[3481];
121 virtual ~A9() {}
122
123 A1* getA1_9() {return A1::getA1();}
124 A9* getA9() {return this;}
125};
126
127struct A10
128 : public virtual A8
129{
130 char _[4831];
131 virtual ~A10() {}
132
133 A1* getA1_3() {return A8::getA1_3();}
134 A1* getA1_4() {return A8::getA1_4();}
135 A1* getA1_6() {return A8::getA1_6();}
136 A2* getA2() {return A8::getA2();}
137 A3* getA3() {return A8::getA3();}
138 A4* getA4() {return A8::getA4();}
139 A5* getA5() {return A8::getA5();}
140 A6* getA6() {return A8::getA6();}
141 A7* getA7() {return A8::getA7();}
142 A8* getA8() {return A8::getA8();}
143 A10* getA10() {return this;}
144};
145
146struct A11
147 : public virtual A8,
148 public A9
149{
150 char _[6483];
151 virtual ~A11() {}
152
153 A1* getA1_3() {return A8::getA1_3();}
154 A1* getA1_4() {return A8::getA1_4();}
155 A1* getA1_6() {return A8::getA1_6();}
156 A1* getA1_9() {return A9::getA1_9();}
157 A2* getA2() {return A8::getA2();}
158 A3* getA3() {return A8::getA3();}
159 A4* getA4() {return A8::getA4();}
160 A5* getA5() {return A8::getA5();}
161 A6* getA6() {return A8::getA6();}
162 A7* getA7() {return A8::getA7();}
163 A8* getA8() {return A8::getA8();}
164 A9* getA9() {return A9::getA9();}
165 A11* getA11() {return this;}
166};
167
168struct A12
169 : public A10,
170 public A11
171{
172 char _[2283];
173 virtual ~A12() {}
174
175 A1* getA1_3() {return A10::getA1_3();}
176 A1* getA1_4() {return A10::getA1_4();}
177 A1* getA1_6() {return A10::getA1_6();}
178 A1* getA1_9() {return A11::getA1_9();}
179 A2* getA2() {return A10::getA2();}
180 A3* getA3() {return A10::getA3();}
181 A4* getA4() {return A10::getA4();}
182 A5* getA5() {return A10::getA5();}
183 A6* getA6() {return A10::getA6();}
184 A7* getA7() {return A10::getA7();}
185 A8* getA8() {return A10::getA8();}
186 A9* getA9() {return A11::getA9();}
187 A10* getA10() {return A10::getA10();}
188 A11* getA11() {return A11::getA11();}
189 A12* getA12() {return this;}
190};
191
192struct A13
193 : public A12
194{
195 char _[1283];
196 virtual ~A13() {}
197
198 A1* getA1_3() {return A12::getA1_3();}
199 A1* getA1_4() {return A12::getA1_4();}
200 A1* getA1_6() {return A12::getA1_6();}
201 A1* getA1_9() {return A12::getA1_9();}
202 A2* getA2() {return A12::getA2();}
203 A3* getA3() {return A12::getA3();}
204 A4* getA4() {return A12::getA4();}
205 A5* getA5() {return A12::getA5();}
206 A6* getA6() {return A12::getA6();}
207 A7* getA7() {return A12::getA7();}
208 A8* getA8() {return A12::getA8();}
209 A9* getA9() {return A12::getA9();}
210 A10* getA10() {return A12::getA10();}
211 A11* getA11() {return A12::getA11();}
212 A12* getA12() {return A12::getA12();}
213 A13* getA13() {return this;}
214};
215
Ben Craigeca353d2016-03-04 14:25:13 +0000216A3 a3;
217A4 a4;
218A5 a5;
219A6 a6;
220A7 a7;
221A8 a8;
222A9 a9;
223A10 a10;
224A11 a11;
225A12 a12;
226A13 a13;
227
Howard Hinnant13093662012-01-16 00:13:46 +0000228void test()
229{
Howard Hinnant13093662012-01-16 00:13:46 +0000230 assert(dynamic_cast<A3*>(a3.getA1_3()) == a3.getA3());
231 assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
232
233 assert(dynamic_cast<A3*>(a4.getA1_4()) == 0);
234 assert(dynamic_cast<A3*>(a4.getA2()) == 0);
235 assert(dynamic_cast<A4*>(a4.getA1_4()) == a4.getA4());
236 assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4());
237
238 assert(dynamic_cast<A3*>(a5.getA1_3()) == a5.getA3());
239 assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3());
240
241 assert(dynamic_cast<A4*>(a5.getA1_3()) == a5.getA4());
242 assert(dynamic_cast<A4*>(a5.getA1_4()) == a5.getA4());
243 assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4());
244 assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4());
245
246 assert(dynamic_cast<A5*>(a5.getA1_3()) == a5.getA5());
247 assert(dynamic_cast<A5*>(a5.getA1_4()) == a5.getA5());
248 assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
249 assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
250 assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
251 assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5());
252
253 assert(dynamic_cast<A3*>(a6.getA1_6()) == 0);
254
255 assert(dynamic_cast<A4*>(a6.getA1_6()) == 0);
256
257 assert(dynamic_cast<A5*>(a6.getA1_6()) == 0);
258
259 assert(dynamic_cast<A6*>(a6.getA1_6()) == a6.getA6());
260
261 assert(dynamic_cast<A3*>(a7.getA1_3()) == a7.getA3());
262 assert(dynamic_cast<A3*>(a7.getA1_4()) == a7.getA3());
263 assert(dynamic_cast<A3*>(a7.getA2()) == a7.getA3());
264
265 assert(dynamic_cast<A4*>(a7.getA1_3()) == a7.getA4());
266 assert(dynamic_cast<A4*>(a7.getA1_4()) == a7.getA4());
267 assert(dynamic_cast<A4*>(a7.getA2()) == a7.getA4());
268 assert(dynamic_cast<A4*>(a7.getA3()) == a7.getA4());
269
270 assert(dynamic_cast<A5*>(a7.getA1_3()) == a7.getA5());
271 assert(dynamic_cast<A5*>(a7.getA1_4()) == a7.getA5());
272 assert(dynamic_cast<A5*>(a7.getA2()) == a7.getA5());
273 assert(dynamic_cast<A5*>(a7.getA3()) == a7.getA5());
274 assert(dynamic_cast<A5*>(a7.getA4()) == a7.getA5());
275
276 assert(dynamic_cast<A6*>(a7.getA1_3()) == a7.getA6());
277 assert(dynamic_cast<A6*>(a7.getA1_4()) == a7.getA6());
278 assert(dynamic_cast<A6*>(a7.getA1_6()) == a7.getA6());
279 assert(dynamic_cast<A6*>(a7.getA2()) == a7.getA6());
280 assert(dynamic_cast<A6*>(a7.getA3()) == a7.getA6());
281 assert(dynamic_cast<A6*>(a7.getA4()) == a7.getA6());
282 assert(dynamic_cast<A6*>(a7.getA5()) == a7.getA6());
283
284 assert(dynamic_cast<A7*>(a7.getA1_3()) == a7.getA7());
285 assert(dynamic_cast<A7*>(a7.getA1_4()) == a7.getA7());
286 assert(dynamic_cast<A7*>(a7.getA1_6()) == a7.getA7());
287 assert(dynamic_cast<A7*>(a7.getA2()) == a7.getA7());
288 assert(dynamic_cast<A7*>(a7.getA3()) == a7.getA7());
289 assert(dynamic_cast<A7*>(a7.getA4()) == a7.getA7());
290 assert(dynamic_cast<A7*>(a7.getA5()) == a7.getA7());
291 assert(dynamic_cast<A7*>(a7.getA6()) == a7.getA7());
292
293 assert(dynamic_cast<A3*>(a8.getA1_3()) == a8.getA3());
294 assert(dynamic_cast<A3*>(a8.getA1_4()) == a8.getA3());
295 assert(dynamic_cast<A3*>(a8.getA2()) == a8.getA3());
296
297 assert(dynamic_cast<A4*>(a8.getA1_3()) == a8.getA4());
298 assert(dynamic_cast<A4*>(a8.getA1_4()) == a8.getA4());
299 assert(dynamic_cast<A4*>(a8.getA2()) == a8.getA4());
300 assert(dynamic_cast<A4*>(a8.getA3()) == a8.getA4());
301
302 assert(dynamic_cast<A5*>(a8.getA1_3()) == a8.getA5());
303 assert(dynamic_cast<A5*>(a8.getA1_4()) == a8.getA5());
304 assert(dynamic_cast<A5*>(a8.getA2()) == a8.getA5());
305 assert(dynamic_cast<A5*>(a8.getA3()) == a8.getA5());
306 assert(dynamic_cast<A5*>(a8.getA4()) == a8.getA5());
307
308 assert(dynamic_cast<A6*>(a8.getA1_3()) == a8.getA6());
309 assert(dynamic_cast<A6*>(a8.getA1_4()) == a8.getA6());
310 assert(dynamic_cast<A6*>(a8.getA1_6()) == a8.getA6());
311 assert(dynamic_cast<A6*>(a8.getA2()) == a8.getA6());
312 assert(dynamic_cast<A6*>(a8.getA3()) == a8.getA6());
313 assert(dynamic_cast<A6*>(a8.getA4()) == a8.getA6());
314 assert(dynamic_cast<A6*>(a8.getA5()) == a8.getA6());
315
316 assert(dynamic_cast<A7*>(a8.getA1_3()) == a8.getA7());
317 assert(dynamic_cast<A7*>(a8.getA1_4()) == a8.getA7());
318 assert(dynamic_cast<A7*>(a8.getA1_6()) == a8.getA7());
319 assert(dynamic_cast<A7*>(a8.getA2()) == a8.getA7());
320 assert(dynamic_cast<A7*>(a8.getA3()) == a8.getA7());
321 assert(dynamic_cast<A7*>(a8.getA4()) == a8.getA7());
322 assert(dynamic_cast<A7*>(a8.getA5()) == a8.getA7());
323 assert(dynamic_cast<A7*>(a8.getA6()) == a8.getA7());
324
325 assert(dynamic_cast<A8*>(a8.getA1_3()) == a8.getA8());
326 assert(dynamic_cast<A8*>(a8.getA1_4()) == a8.getA8());
327 assert(dynamic_cast<A8*>(a8.getA1_6()) == a8.getA8());
328 assert(dynamic_cast<A8*>(a8.getA2()) == a8.getA8());
329 assert(dynamic_cast<A8*>(a8.getA3()) == a8.getA8());
330 assert(dynamic_cast<A8*>(a8.getA4()) == a8.getA8());
331 assert(dynamic_cast<A8*>(a8.getA5()) == a8.getA8());
332 assert(dynamic_cast<A8*>(a8.getA6()) == a8.getA8());
333 assert(dynamic_cast<A8*>(a8.getA7()) == a8.getA8());
334
335 assert(dynamic_cast<A3*>(a9.getA1_9()) == 0);
336
337 assert(dynamic_cast<A4*>(a9.getA1_9()) == 0);
338
339 assert(dynamic_cast<A5*>(a9.getA1_9()) == 0);
340
341 assert(dynamic_cast<A6*>(a9.getA1_9()) == 0);
342
343 assert(dynamic_cast<A7*>(a9.getA1_9()) == 0);
344
345 assert(dynamic_cast<A8*>(a9.getA1_9()) == 0);
346
347 assert(dynamic_cast<A9*>(a9.getA1_9()) == a9.getA9());
348
349 assert(dynamic_cast<A3*>(a10.getA1_3()) == a10.getA3());
350 assert(dynamic_cast<A3*>(a10.getA1_4()) == a10.getA3());
351 assert(dynamic_cast<A3*>(a10.getA1_6()) == a10.getA3());
352 assert(dynamic_cast<A3*>(a10.getA2()) == a10.getA3());
353
354 assert(dynamic_cast<A4*>(a10.getA1_3()) == a10.getA4());
355 assert(dynamic_cast<A4*>(a10.getA1_4()) == a10.getA4());
356 assert(dynamic_cast<A4*>(a10.getA1_6()) == a10.getA4());
357 assert(dynamic_cast<A4*>(a10.getA2()) == a10.getA4());
358 assert(dynamic_cast<A4*>(a10.getA3()) == a10.getA4());
359
360 assert(dynamic_cast<A5*>(a10.getA1_3()) == a10.getA5());
361 assert(dynamic_cast<A5*>(a10.getA1_4()) == a10.getA5());
362 assert(dynamic_cast<A5*>(a10.getA1_6()) == a10.getA5());
363 assert(dynamic_cast<A5*>(a10.getA2()) == a10.getA5());
364 assert(dynamic_cast<A5*>(a10.getA3()) == a10.getA5());
365 assert(dynamic_cast<A5*>(a10.getA4()) == a10.getA5());
366
367 assert(dynamic_cast<A6*>(a10.getA1_3()) == a10.getA6());
368 assert(dynamic_cast<A6*>(a10.getA1_4()) == a10.getA6());
369 assert(dynamic_cast<A6*>(a10.getA1_6()) == a10.getA6());
370 assert(dynamic_cast<A6*>(a10.getA2()) == a10.getA6());
371 assert(dynamic_cast<A6*>(a10.getA3()) == a10.getA6());
372 assert(dynamic_cast<A6*>(a10.getA4()) == a10.getA6());
373 assert(dynamic_cast<A6*>(a10.getA5()) == a10.getA6());
374
375 assert(dynamic_cast<A7*>(a10.getA1_3()) == a10.getA7());
376 assert(dynamic_cast<A7*>(a10.getA1_4()) == a10.getA7());
377 assert(dynamic_cast<A7*>(a10.getA1_6()) == a10.getA7());
378 assert(dynamic_cast<A7*>(a10.getA2()) == a10.getA7());
379 assert(dynamic_cast<A7*>(a10.getA3()) == a10.getA7());
380 assert(dynamic_cast<A7*>(a10.getA4()) == a10.getA7());
381 assert(dynamic_cast<A7*>(a10.getA5()) == a10.getA7());
382 assert(dynamic_cast<A7*>(a10.getA6()) == a10.getA7());
383
384 assert(dynamic_cast<A8*>(a10.getA1_3()) == a10.getA8());
385 assert(dynamic_cast<A8*>(a10.getA1_4()) == a10.getA8());
386 assert(dynamic_cast<A8*>(a10.getA1_6()) == a10.getA8());
387 assert(dynamic_cast<A8*>(a10.getA2()) == a10.getA8());
388 assert(dynamic_cast<A8*>(a10.getA3()) == a10.getA8());
389 assert(dynamic_cast<A8*>(a10.getA4()) == a10.getA8());
390 assert(dynamic_cast<A8*>(a10.getA5()) == a10.getA8());
391 assert(dynamic_cast<A8*>(a10.getA6()) == a10.getA8());
392 assert(dynamic_cast<A8*>(a10.getA7()) == a10.getA8());
393
394 assert(dynamic_cast<A9*>(a10.getA1_3()) == 0);
395 assert(dynamic_cast<A9*>(a10.getA1_4()) == 0);
396 assert(dynamic_cast<A9*>(a10.getA1_6()) == 0);
397 assert(dynamic_cast<A9*>(a10.getA2()) == 0);
398 assert(dynamic_cast<A9*>(a10.getA3()) == 0);
399 assert(dynamic_cast<A9*>(a10.getA4()) == 0);
400 assert(dynamic_cast<A9*>(a10.getA5()) == 0);
401 assert(dynamic_cast<A9*>(a10.getA6()) == 0);
402 assert(dynamic_cast<A9*>(a10.getA7()) == 0);
403 assert(dynamic_cast<A9*>(a10.getA8()) == 0);
404
405 assert(dynamic_cast<A10*>(a10.getA1_3()) == a10.getA10());
406 assert(dynamic_cast<A10*>(a10.getA1_4()) == a10.getA10());
407 assert(dynamic_cast<A10*>(a10.getA1_6()) == a10.getA10());
408 assert(dynamic_cast<A10*>(a10.getA2()) == a10.getA10());
409 assert(dynamic_cast<A10*>(a10.getA3()) == a10.getA10());
410 assert(dynamic_cast<A10*>(a10.getA4()) == a10.getA10());
411 assert(dynamic_cast<A10*>(a10.getA5()) == a10.getA10());
412 assert(dynamic_cast<A10*>(a10.getA6()) == a10.getA10());
413 assert(dynamic_cast<A10*>(a10.getA7()) == a10.getA10());
414 assert(dynamic_cast<A10*>(a10.getA8()) == a10.getA10());
415
416 assert(dynamic_cast<A3*>(a11.getA1_3()) == a11.getA3());
417 assert(dynamic_cast<A3*>(a11.getA1_4()) == a11.getA3());
418 assert(dynamic_cast<A3*>(a11.getA1_6()) == a11.getA3());
419 assert(dynamic_cast<A3*>(a11.getA1_9()) == a11.getA3());
420 assert(dynamic_cast<A3*>(a11.getA2()) == a11.getA3());
421
422 assert(dynamic_cast<A4*>(a11.getA1_3()) == a11.getA4());
423 assert(dynamic_cast<A4*>(a11.getA1_4()) == a11.getA4());
424 assert(dynamic_cast<A4*>(a11.getA1_6()) == a11.getA4());
425 assert(dynamic_cast<A4*>(a11.getA1_9()) == a11.getA4());
426 assert(dynamic_cast<A4*>(a11.getA2()) == a11.getA4());
427 assert(dynamic_cast<A4*>(a11.getA3()) == a11.getA4());
428
429 assert(dynamic_cast<A5*>(a11.getA1_3()) == a11.getA5());
430 assert(dynamic_cast<A5*>(a11.getA1_4()) == a11.getA5());
431 assert(dynamic_cast<A5*>(a11.getA1_6()) == a11.getA5());
432 assert(dynamic_cast<A5*>(a11.getA1_9()) == a11.getA5());
433 assert(dynamic_cast<A5*>(a11.getA2()) == a11.getA5());
434 assert(dynamic_cast<A5*>(a11.getA3()) == a11.getA5());
435 assert(dynamic_cast<A5*>(a11.getA4()) == a11.getA5());
436
437 assert(dynamic_cast<A6*>(a11.getA1_3()) == a11.getA6());
438 assert(dynamic_cast<A6*>(a11.getA1_4()) == a11.getA6());
439 assert(dynamic_cast<A6*>(a11.getA1_6()) == a11.getA6());
440 assert(dynamic_cast<A6*>(a11.getA1_9()) == a11.getA6());
441 assert(dynamic_cast<A6*>(a11.getA2()) == a11.getA6());
442 assert(dynamic_cast<A6*>(a11.getA3()) == a11.getA6());
443 assert(dynamic_cast<A6*>(a11.getA4()) == a11.getA6());
444 assert(dynamic_cast<A6*>(a11.getA5()) == a11.getA6());
445
446 assert(dynamic_cast<A7*>(a11.getA1_3()) == a11.getA7());
447 assert(dynamic_cast<A7*>(a11.getA1_4()) == a11.getA7());
448 assert(dynamic_cast<A7*>(a11.getA1_6()) == a11.getA7());
449 assert(dynamic_cast<A7*>(a11.getA1_9()) == a11.getA7());
450 assert(dynamic_cast<A7*>(a11.getA2()) == a11.getA7());
451 assert(dynamic_cast<A7*>(a11.getA3()) == a11.getA7());
452 assert(dynamic_cast<A7*>(a11.getA4()) == a11.getA7());
453 assert(dynamic_cast<A7*>(a11.getA5()) == a11.getA7());
454 assert(dynamic_cast<A7*>(a11.getA6()) == a11.getA7());
455
456 assert(dynamic_cast<A8*>(a11.getA1_3()) == a11.getA8());
457 assert(dynamic_cast<A8*>(a11.getA1_4()) == a11.getA8());
458 assert(dynamic_cast<A8*>(a11.getA1_6()) == a11.getA8());
459 assert(dynamic_cast<A8*>(a11.getA1_9()) == a11.getA8());
460 assert(dynamic_cast<A8*>(a11.getA2()) == a11.getA8());
461 assert(dynamic_cast<A8*>(a11.getA3()) == a11.getA8());
462 assert(dynamic_cast<A8*>(a11.getA4()) == a11.getA8());
463 assert(dynamic_cast<A8*>(a11.getA5()) == a11.getA8());
464 assert(dynamic_cast<A8*>(a11.getA6()) == a11.getA8());
465 assert(dynamic_cast<A8*>(a11.getA7()) == a11.getA8());
466
467 assert(dynamic_cast<A9*>(a11.getA1_3()) == a11.getA9());
468 assert(dynamic_cast<A9*>(a11.getA1_4()) == a11.getA9());
469 assert(dynamic_cast<A9*>(a11.getA1_6()) == a11.getA9());
470 assert(dynamic_cast<A9*>(a11.getA1_9()) == a11.getA9());
471 assert(dynamic_cast<A9*>(a11.getA2()) == a11.getA9());
472 assert(dynamic_cast<A9*>(a11.getA3()) == a11.getA9());
473 assert(dynamic_cast<A9*>(a11.getA4()) == a11.getA9());
474 assert(dynamic_cast<A9*>(a11.getA5()) == a11.getA9());
475 assert(dynamic_cast<A9*>(a11.getA6()) == a11.getA9());
476 assert(dynamic_cast<A9*>(a11.getA7()) == a11.getA9());
477 assert(dynamic_cast<A9*>(a11.getA8()) == a11.getA9());
478
479 assert(dynamic_cast<A10*>(a11.getA1_3()) == 0);
480 assert(dynamic_cast<A10*>(a11.getA1_4()) == 0);
481 assert(dynamic_cast<A10*>(a11.getA1_6()) == 0);
482 assert(dynamic_cast<A10*>(a11.getA1_9()) == 0);
483 assert(dynamic_cast<A10*>(a11.getA2()) == 0);
484 assert(dynamic_cast<A10*>(a11.getA3()) == 0);
485 assert(dynamic_cast<A10*>(a11.getA4()) == 0);
486 assert(dynamic_cast<A10*>(a11.getA5()) == 0);
487 assert(dynamic_cast<A10*>(a11.getA6()) == 0);
488 assert(dynamic_cast<A10*>(a11.getA7()) == 0);
489 assert(dynamic_cast<A10*>(a11.getA8()) == 0);
490 assert(dynamic_cast<A10*>(a11.getA9()) == 0);
491
492 assert(dynamic_cast<A11*>(a11.getA1_3()) == a11.getA11());
493 assert(dynamic_cast<A11*>(a11.getA1_4()) == a11.getA11());
494 assert(dynamic_cast<A11*>(a11.getA1_6()) == a11.getA11());
495 assert(dynamic_cast<A11*>(a11.getA1_9()) == a11.getA11());
496 assert(dynamic_cast<A11*>(a11.getA2()) == a11.getA11());
497 assert(dynamic_cast<A11*>(a11.getA3()) == a11.getA11());
498 assert(dynamic_cast<A11*>(a11.getA4()) == a11.getA11());
499 assert(dynamic_cast<A11*>(a11.getA5()) == a11.getA11());
500 assert(dynamic_cast<A11*>(a11.getA6()) == a11.getA11());
501 assert(dynamic_cast<A11*>(a11.getA7()) == a11.getA11());
502 assert(dynamic_cast<A11*>(a11.getA8()) == a11.getA11());
503 assert(dynamic_cast<A11*>(a11.getA9()) == a11.getA11());
504
505 assert(dynamic_cast<A3*>(a12.getA1_3()) == a12.getA3());
506 assert(dynamic_cast<A3*>(a12.getA1_4()) == a12.getA3());
507 assert(dynamic_cast<A3*>(a12.getA1_6()) == a12.getA3());
508 assert(dynamic_cast<A3*>(a12.getA1_9()) == a12.getA3());
509 assert(dynamic_cast<A3*>(a12.getA2()) == a12.getA3());
510
511 assert(dynamic_cast<A4*>(a12.getA1_3()) == a12.getA4());
512 assert(dynamic_cast<A4*>(a12.getA1_4()) == a12.getA4());
513 assert(dynamic_cast<A4*>(a12.getA1_6()) == a12.getA4());
514 assert(dynamic_cast<A4*>(a12.getA1_9()) == a12.getA4());
515 assert(dynamic_cast<A4*>(a12.getA2()) == a12.getA4());
516 assert(dynamic_cast<A4*>(a12.getA3()) == a12.getA4());
517
518 assert(dynamic_cast<A5*>(a12.getA1_3()) == a12.getA5());
519 assert(dynamic_cast<A5*>(a12.getA1_4()) == a12.getA5());
520 assert(dynamic_cast<A5*>(a12.getA1_6()) == a12.getA5());
521 assert(dynamic_cast<A5*>(a12.getA1_9()) == a12.getA5());
522 assert(dynamic_cast<A5*>(a12.getA2()) == a12.getA5());
523 assert(dynamic_cast<A5*>(a12.getA3()) == a12.getA5());
524 assert(dynamic_cast<A5*>(a12.getA4()) == a12.getA5());
525
526 assert(dynamic_cast<A6*>(a12.getA1_3()) == a12.getA6());
527 assert(dynamic_cast<A6*>(a12.getA1_4()) == a12.getA6());
528 assert(dynamic_cast<A6*>(a12.getA1_6()) == a12.getA6());
529 assert(dynamic_cast<A6*>(a12.getA1_9()) == a12.getA6());
530 assert(dynamic_cast<A6*>(a12.getA2()) == a12.getA6());
531 assert(dynamic_cast<A6*>(a12.getA3()) == a12.getA6());
532 assert(dynamic_cast<A6*>(a12.getA4()) == a12.getA6());
533 assert(dynamic_cast<A6*>(a12.getA5()) == a12.getA6());
534
535 assert(dynamic_cast<A7*>(a12.getA1_3()) == a12.getA7());
536 assert(dynamic_cast<A7*>(a12.getA1_4()) == a12.getA7());
537 assert(dynamic_cast<A7*>(a12.getA1_6()) == a12.getA7());
538 assert(dynamic_cast<A7*>(a12.getA1_9()) == a12.getA7());
539 assert(dynamic_cast<A7*>(a12.getA2()) == a12.getA7());
540 assert(dynamic_cast<A7*>(a12.getA3()) == a12.getA7());
541 assert(dynamic_cast<A7*>(a12.getA4()) == a12.getA7());
542 assert(dynamic_cast<A7*>(a12.getA5()) == a12.getA7());
543 assert(dynamic_cast<A7*>(a12.getA6()) == a12.getA7());
544
545 assert(dynamic_cast<A8*>(a12.getA1_3()) == a12.getA8());
546 assert(dynamic_cast<A8*>(a12.getA1_4()) == a12.getA8());
547 assert(dynamic_cast<A8*>(a12.getA1_6()) == a12.getA8());
548 assert(dynamic_cast<A8*>(a12.getA1_9()) == a12.getA8());
549 assert(dynamic_cast<A8*>(a12.getA2()) == a12.getA8());
550 assert(dynamic_cast<A8*>(a12.getA3()) == a12.getA8());
551 assert(dynamic_cast<A8*>(a12.getA4()) == a12.getA8());
552 assert(dynamic_cast<A8*>(a12.getA5()) == a12.getA8());
553 assert(dynamic_cast<A8*>(a12.getA6()) == a12.getA8());
554 assert(dynamic_cast<A8*>(a12.getA7()) == a12.getA8());
555
556 assert(dynamic_cast<A9*>(a12.getA1_3()) == a12.getA9());
557 assert(dynamic_cast<A9*>(a12.getA1_4()) == a12.getA9());
558 assert(dynamic_cast<A9*>(a12.getA1_6()) == a12.getA9());
559 assert(dynamic_cast<A9*>(a12.getA1_9()) == a12.getA9());
560 assert(dynamic_cast<A9*>(a12.getA2()) == a12.getA9());
561 assert(dynamic_cast<A9*>(a12.getA3()) == a12.getA9());
562 assert(dynamic_cast<A9*>(a12.getA4()) == a12.getA9());
563 assert(dynamic_cast<A9*>(a12.getA5()) == a12.getA9());
564 assert(dynamic_cast<A9*>(a12.getA6()) == a12.getA9());
565 assert(dynamic_cast<A9*>(a12.getA7()) == a12.getA9());
566 assert(dynamic_cast<A9*>(a12.getA8()) == a12.getA9());
567
568 assert(dynamic_cast<A10*>(a12.getA1_3()) == a12.getA10());
569 assert(dynamic_cast<A10*>(a12.getA1_4()) == a12.getA10());
570 assert(dynamic_cast<A10*>(a12.getA1_6()) == a12.getA10());
571 assert(dynamic_cast<A10*>(a12.getA1_9()) == a12.getA10());
572 assert(dynamic_cast<A10*>(a12.getA2()) == a12.getA10());
573 assert(dynamic_cast<A10*>(a12.getA3()) == a12.getA10());
574 assert(dynamic_cast<A10*>(a12.getA4()) == a12.getA10());
575 assert(dynamic_cast<A10*>(a12.getA5()) == a12.getA10());
576 assert(dynamic_cast<A10*>(a12.getA6()) == a12.getA10());
577 assert(dynamic_cast<A10*>(a12.getA7()) == a12.getA10());
578 assert(dynamic_cast<A10*>(a12.getA8()) == a12.getA10());
579 assert(dynamic_cast<A10*>(a12.getA9()) == a12.getA10());
580
581 assert(dynamic_cast<A11*>(a12.getA1_3()) == a12.getA11());
582 assert(dynamic_cast<A11*>(a12.getA1_4()) == a12.getA11());
583 assert(dynamic_cast<A11*>(a12.getA1_6()) == a12.getA11());
584 assert(dynamic_cast<A11*>(a12.getA1_9()) == a12.getA11());
585 assert(dynamic_cast<A11*>(a12.getA2()) == a12.getA11());
586 assert(dynamic_cast<A11*>(a12.getA3()) == a12.getA11());
587 assert(dynamic_cast<A11*>(a12.getA4()) == a12.getA11());
588 assert(dynamic_cast<A11*>(a12.getA5()) == a12.getA11());
589 assert(dynamic_cast<A11*>(a12.getA6()) == a12.getA11());
590 assert(dynamic_cast<A11*>(a12.getA7()) == a12.getA11());
591 assert(dynamic_cast<A11*>(a12.getA8()) == a12.getA11());
592 assert(dynamic_cast<A11*>(a12.getA9()) == a12.getA11());
593 assert(dynamic_cast<A11*>(a12.getA10()) == a12.getA11());
594
595 assert(dynamic_cast<A12*>(a12.getA1_3()) == a12.getA12());
596 assert(dynamic_cast<A12*>(a12.getA1_4()) == a12.getA12());
597 assert(dynamic_cast<A12*>(a12.getA1_6()) == a12.getA12());
598 assert(dynamic_cast<A12*>(a12.getA1_9()) == a12.getA12());
599 assert(dynamic_cast<A12*>(a12.getA2()) == a12.getA12());
600 assert(dynamic_cast<A12*>(a12.getA3()) == a12.getA12());
601 assert(dynamic_cast<A12*>(a12.getA4()) == a12.getA12());
602 assert(dynamic_cast<A12*>(a12.getA5()) == a12.getA12());
603 assert(dynamic_cast<A12*>(a12.getA6()) == a12.getA12());
604 assert(dynamic_cast<A12*>(a12.getA7()) == a12.getA12());
605 assert(dynamic_cast<A12*>(a12.getA8()) == a12.getA12());
606 assert(dynamic_cast<A12*>(a12.getA9()) == a12.getA12());
607 assert(dynamic_cast<A12*>(a12.getA10()) == a12.getA12());
608 assert(dynamic_cast<A12*>(a12.getA11()) == a12.getA12());
609
610 assert(dynamic_cast<A3*>(a13.getA1_3()) == a13.getA3());
611 assert(dynamic_cast<A3*>(a13.getA1_4()) == a13.getA3());
612 assert(dynamic_cast<A3*>(a13.getA1_6()) == a13.getA3());
613 assert(dynamic_cast<A3*>(a13.getA1_9()) == a13.getA3());
614 assert(dynamic_cast<A3*>(a13.getA2()) == a13.getA3());
615
616 assert(dynamic_cast<A4*>(a13.getA1_3()) == a13.getA4());
617 assert(dynamic_cast<A4*>(a13.getA1_4()) == a13.getA4());
618 assert(dynamic_cast<A4*>(a13.getA1_6()) == a13.getA4());
619 assert(dynamic_cast<A4*>(a13.getA1_9()) == a13.getA4());
620 assert(dynamic_cast<A4*>(a13.getA2()) == a13.getA4());
621 assert(dynamic_cast<A4*>(a13.getA3()) == a13.getA4());
622
623 assert(dynamic_cast<A5*>(a13.getA1_3()) == a13.getA5());
624 assert(dynamic_cast<A5*>(a13.getA1_4()) == a13.getA5());
625 assert(dynamic_cast<A5*>(a13.getA1_6()) == a13.getA5());
626 assert(dynamic_cast<A5*>(a13.getA1_9()) == a13.getA5());
627 assert(dynamic_cast<A5*>(a13.getA2()) == a13.getA5());
628 assert(dynamic_cast<A5*>(a13.getA3()) == a13.getA5());
629 assert(dynamic_cast<A5*>(a13.getA4()) == a13.getA5());
630
631 assert(dynamic_cast<A6*>(a13.getA1_3()) == a13.getA6());
632 assert(dynamic_cast<A6*>(a13.getA1_4()) == a13.getA6());
633 assert(dynamic_cast<A6*>(a13.getA1_6()) == a13.getA6());
634 assert(dynamic_cast<A6*>(a13.getA1_9()) == a13.getA6());
635 assert(dynamic_cast<A6*>(a13.getA2()) == a13.getA6());
636 assert(dynamic_cast<A6*>(a13.getA3()) == a13.getA6());
637 assert(dynamic_cast<A6*>(a13.getA4()) == a13.getA6());
638 assert(dynamic_cast<A6*>(a13.getA5()) == a13.getA6());
639
640 assert(dynamic_cast<A7*>(a13.getA1_3()) == a13.getA7());
641 assert(dynamic_cast<A7*>(a13.getA1_4()) == a13.getA7());
642 assert(dynamic_cast<A7*>(a13.getA1_6()) == a13.getA7());
643 assert(dynamic_cast<A7*>(a13.getA1_9()) == a13.getA7());
644 assert(dynamic_cast<A7*>(a13.getA2()) == a13.getA7());
645 assert(dynamic_cast<A7*>(a13.getA3()) == a13.getA7());
646 assert(dynamic_cast<A7*>(a13.getA4()) == a13.getA7());
647 assert(dynamic_cast<A7*>(a13.getA5()) == a13.getA7());
648 assert(dynamic_cast<A7*>(a13.getA6()) == a13.getA7());
649
650 assert(dynamic_cast<A8*>(a13.getA1_3()) == a13.getA8());
651 assert(dynamic_cast<A8*>(a13.getA1_4()) == a13.getA8());
652 assert(dynamic_cast<A8*>(a13.getA1_6()) == a13.getA8());
653 assert(dynamic_cast<A8*>(a13.getA1_9()) == a13.getA8());
654 assert(dynamic_cast<A8*>(a13.getA2()) == a13.getA8());
655 assert(dynamic_cast<A8*>(a13.getA3()) == a13.getA8());
656 assert(dynamic_cast<A8*>(a13.getA4()) == a13.getA8());
657 assert(dynamic_cast<A8*>(a13.getA5()) == a13.getA8());
658 assert(dynamic_cast<A8*>(a13.getA6()) == a13.getA8());
659 assert(dynamic_cast<A8*>(a13.getA7()) == a13.getA8());
660
661 assert(dynamic_cast<A9*>(a13.getA1_3()) == a13.getA9());
662 assert(dynamic_cast<A9*>(a13.getA1_4()) == a13.getA9());
663 assert(dynamic_cast<A9*>(a13.getA1_6()) == a13.getA9());
664 assert(dynamic_cast<A9*>(a13.getA1_9()) == a13.getA9());
665 assert(dynamic_cast<A9*>(a13.getA2()) == a13.getA9());
666 assert(dynamic_cast<A9*>(a13.getA3()) == a13.getA9());
667 assert(dynamic_cast<A9*>(a13.getA4()) == a13.getA9());
668 assert(dynamic_cast<A9*>(a13.getA5()) == a13.getA9());
669 assert(dynamic_cast<A9*>(a13.getA6()) == a13.getA9());
670 assert(dynamic_cast<A9*>(a13.getA7()) == a13.getA9());
671 assert(dynamic_cast<A9*>(a13.getA8()) == a13.getA9());
672
673 assert(dynamic_cast<A10*>(a13.getA1_3()) == a13.getA10());
674 assert(dynamic_cast<A10*>(a13.getA1_4()) == a13.getA10());
675 assert(dynamic_cast<A10*>(a13.getA1_6()) == a13.getA10());
676 assert(dynamic_cast<A10*>(a13.getA1_9()) == a13.getA10());
677 assert(dynamic_cast<A10*>(a13.getA2()) == a13.getA10());
678 assert(dynamic_cast<A10*>(a13.getA3()) == a13.getA10());
679 assert(dynamic_cast<A10*>(a13.getA4()) == a13.getA10());
680 assert(dynamic_cast<A10*>(a13.getA5()) == a13.getA10());
681 assert(dynamic_cast<A10*>(a13.getA6()) == a13.getA10());
682 assert(dynamic_cast<A10*>(a13.getA7()) == a13.getA10());
683 assert(dynamic_cast<A10*>(a13.getA8()) == a13.getA10());
684 assert(dynamic_cast<A10*>(a13.getA9()) == a13.getA10());
685
686 assert(dynamic_cast<A11*>(a13.getA1_3()) == a13.getA11());
687 assert(dynamic_cast<A11*>(a13.getA1_4()) == a13.getA11());
688 assert(dynamic_cast<A11*>(a13.getA1_6()) == a13.getA11());
689 assert(dynamic_cast<A11*>(a13.getA1_9()) == a13.getA11());
690 assert(dynamic_cast<A11*>(a13.getA2()) == a13.getA11());
691 assert(dynamic_cast<A11*>(a13.getA3()) == a13.getA11());
692 assert(dynamic_cast<A11*>(a13.getA4()) == a13.getA11());
693 assert(dynamic_cast<A11*>(a13.getA5()) == a13.getA11());
694 assert(dynamic_cast<A11*>(a13.getA6()) == a13.getA11());
695 assert(dynamic_cast<A11*>(a13.getA7()) == a13.getA11());
696 assert(dynamic_cast<A11*>(a13.getA8()) == a13.getA11());
697 assert(dynamic_cast<A11*>(a13.getA9()) == a13.getA11());
698 assert(dynamic_cast<A11*>(a13.getA10()) == a13.getA11());
699
700 assert(dynamic_cast<A12*>(a13.getA1_3()) == a13.getA12());
701 assert(dynamic_cast<A12*>(a13.getA1_4()) == a13.getA12());
702 assert(dynamic_cast<A12*>(a13.getA1_6()) == a13.getA12());
703 assert(dynamic_cast<A12*>(a13.getA1_9()) == a13.getA12());
704 assert(dynamic_cast<A12*>(a13.getA2()) == a13.getA12());
705 assert(dynamic_cast<A12*>(a13.getA3()) == a13.getA12());
706 assert(dynamic_cast<A12*>(a13.getA4()) == a13.getA12());
707 assert(dynamic_cast<A12*>(a13.getA5()) == a13.getA12());
708 assert(dynamic_cast<A12*>(a13.getA6()) == a13.getA12());
709 assert(dynamic_cast<A12*>(a13.getA7()) == a13.getA12());
710 assert(dynamic_cast<A12*>(a13.getA8()) == a13.getA12());
711 assert(dynamic_cast<A12*>(a13.getA9()) == a13.getA12());
712 assert(dynamic_cast<A12*>(a13.getA10()) == a13.getA12());
713 assert(dynamic_cast<A12*>(a13.getA11()) == a13.getA12());
714
715 assert(dynamic_cast<A13*>(a13.getA1_3()) == a13.getA13());
716 assert(dynamic_cast<A13*>(a13.getA1_4()) == a13.getA13());
717 assert(dynamic_cast<A13*>(a13.getA1_6()) == a13.getA13());
718 assert(dynamic_cast<A13*>(a13.getA1_9()) == a13.getA13());
719 assert(dynamic_cast<A13*>(a13.getA2()) == a13.getA13());
720 assert(dynamic_cast<A13*>(a13.getA3()) == a13.getA13());
721 assert(dynamic_cast<A13*>(a13.getA4()) == a13.getA13());
722 assert(dynamic_cast<A13*>(a13.getA5()) == a13.getA13());
723 assert(dynamic_cast<A13*>(a13.getA6()) == a13.getA13());
724 assert(dynamic_cast<A13*>(a13.getA7()) == a13.getA13());
725 assert(dynamic_cast<A13*>(a13.getA8()) == a13.getA13());
726 assert(dynamic_cast<A13*>(a13.getA9()) == a13.getA13());
727 assert(dynamic_cast<A13*>(a13.getA10()) == a13.getA13());
728 assert(dynamic_cast<A13*>(a13.getA11()) == a13.getA13());
729 assert(dynamic_cast<A13*>(a13.getA12()) == a13.getA13());
730}
731
732} // t1
733
734namespace t2
735{
736
737struct A1
738{
739 char _[43981];
740 virtual ~A1() {}
741
742 A1* getA1() {return this;}
743};
744
745struct A2
746{
747 char _[34981];
748 virtual ~A2() {}
749
750 A2* getA2() {return this;}
751};
752
753struct A3
754 : protected A1,
755 public virtual A2
756{
757 char _[93481];
758 virtual ~A3() {}
759
760 A1* getA1_3() {return A1::getA1();}
761 A2* getA2() {return A2::getA2();}
762 A3* getA3() {return this;}
763};
764
765struct A4
766 : public virtual A2,
767 public A1
768{
769 char _[13489];
770 virtual ~A4() {}
771
772 A1* getA1_4() {return A1::getA1();}
773 A2* getA2() {return A2::getA2();}
774 A4* getA4() {return this;}
775};
776
777struct A5
778 : public A3,
779 public A4
780{
781 char _[13489];
782 virtual ~A5() {}
783
784 A1* getA1_3() {return A3::getA1();}
785 A1* getA1_4() {return A4::getA1();}
786 A2* getA2() {return A3::getA2();}
787 A3* getA3() {return A3::getA3();}
788 A4* getA4() {return A4::getA4();}
789 A5* getA5() {return this;}
790};
791
792struct A6
793 : public A1
794{
795 char _[81349];
796 virtual ~A6() {}
797
798 A1* getA1_6() {return A1::getA1();}
799 A6* getA6() {return this;}
800};
801
802struct A7
803 : public A5,
804 public A6
805{
806 char _[34819];
807 virtual ~A7() {}
808
809 A1* getA1_3() {return A5::getA1_3();}
810 A1* getA1_4() {return A5::getA1_4();}
811 A1* getA1_6() {return A6::getA1_6();}
812 A2* getA2() {return A5::getA2();}
813 A3* getA3() {return A5::getA3();}
814 A4* getA4() {return A5::getA4();}
815 A5* getA5() {return A5::getA5();}
816 A6* getA6() {return A6::getA6();}
817 A7* getA7() {return this;}
818};
819
820struct A8
821 : public A7
822{
823 char _[3489];
824 virtual ~A8() {}
825
826 A1* getA1_3() {return A7::getA1_3();}
827 A1* getA1_4() {return A7::getA1_4();}
828 A1* getA1_6() {return A7::getA1_6();}
829 A2* getA2() {return A7::getA2();}
830 A3* getA3() {return A7::getA3();}
831 A4* getA4() {return A7::getA4();}
832 A5* getA5() {return A7::getA5();}
833 A6* getA6() {return A7::getA6();}
834 A7* getA7() {return A7::getA7();}
835 A8* getA8() {return this;}
836};
837
838struct A9
839 : public A1
840{
841 char _[3481];
842 virtual ~A9() {}
843
844 A1* getA1_9() {return A1::getA1();}
845 A9* getA9() {return this;}
846};
847
848struct A10
849 : public virtual A8
850{
851 char _[4831];
852 virtual ~A10() {}
853
854 A1* getA1_3() {return A8::getA1_3();}
855 A1* getA1_4() {return A8::getA1_4();}
856 A1* getA1_6() {return A8::getA1_6();}
857 A2* getA2() {return A8::getA2();}
858 A3* getA3() {return A8::getA3();}
859 A4* getA4() {return A8::getA4();}
860 A5* getA5() {return A8::getA5();}
861 A6* getA6() {return A8::getA6();}
862 A7* getA7() {return A8::getA7();}
863 A8* getA8() {return A8::getA8();}
864 A10* getA10() {return this;}
865};
866
867struct A11
868 : public virtual A8,
869 public A9
870{
871 char _[6483];
872 virtual ~A11() {}
873
874 A1* getA1_3() {return A8::getA1_3();}
875 A1* getA1_4() {return A8::getA1_4();}
876 A1* getA1_6() {return A8::getA1_6();}
877 A1* getA1_9() {return A9::getA1_9();}
878 A2* getA2() {return A8::getA2();}
879 A3* getA3() {return A8::getA3();}
880 A4* getA4() {return A8::getA4();}
881 A5* getA5() {return A8::getA5();}
882 A6* getA6() {return A8::getA6();}
883 A7* getA7() {return A8::getA7();}
884 A8* getA8() {return A8::getA8();}
885 A9* getA9() {return A9::getA9();}
886 A11* getA11() {return this;}
887};
888
889struct A12
890 : public A10,
891 public A11
892{
893 char _[2283];
894 virtual ~A12() {}
895
896 A1* getA1_3() {return A10::getA1_3();}
897 A1* getA1_4() {return A10::getA1_4();}
898 A1* getA1_6() {return A10::getA1_6();}
899 A1* getA1_9() {return A11::getA1_9();}
900 A2* getA2() {return A10::getA2();}
901 A3* getA3() {return A10::getA3();}
902 A4* getA4() {return A10::getA4();}
903 A5* getA5() {return A10::getA5();}
904 A6* getA6() {return A10::getA6();}
905 A7* getA7() {return A10::getA7();}
906 A8* getA8() {return A10::getA8();}
907 A9* getA9() {return A11::getA9();}
908 A10* getA10() {return A10::getA10();}
909 A11* getA11() {return A11::getA11();}
910 A12* getA12() {return this;}
911};
912
913struct A13
914 : public A12
915{
916 char _[1283];
917 virtual ~A13() {}
918
919 A1* getA1_3() {return A12::getA1_3();}
920 A1* getA1_4() {return A12::getA1_4();}
921 A1* getA1_6() {return A12::getA1_6();}
922 A1* getA1_9() {return A12::getA1_9();}
923 A2* getA2() {return A12::getA2();}
924 A3* getA3() {return A12::getA3();}
925 A4* getA4() {return A12::getA4();}
926 A5* getA5() {return A12::getA5();}
927 A6* getA6() {return A12::getA6();}
928 A7* getA7() {return A12::getA7();}
929 A8* getA8() {return A12::getA8();}
930 A9* getA9() {return A12::getA9();}
931 A10* getA10() {return A12::getA10();}
932 A11* getA11() {return A12::getA11();}
933 A12* getA12() {return A12::getA12();}
934 A13* getA13() {return this;}
935};
936
Ben Craigeca353d2016-03-04 14:25:13 +0000937A3 a3;
938A4 a4;
939A5 a5;
940A6 a6;
941A7 a7;
942A8 a8;
943A9 a9;
944A10 a10;
945A11 a11;
946A12 a12;
947A13 a13;
948
Howard Hinnant13093662012-01-16 00:13:46 +0000949void test()
950{
Howard Hinnant13093662012-01-16 00:13:46 +0000951 assert(dynamic_cast<A3*>(a3.getA1_3()) == 0);
952 assert(dynamic_cast<A3*>(a3.getA2()) == a3.getA3());
953
954 assert(dynamic_cast<A3*>(a4.getA1_4()) == 0);
955 assert(dynamic_cast<A3*>(a4.getA2()) == 0);
956 assert(dynamic_cast<A4*>(a4.getA1_4()) == a4.getA4());
957 assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4());
958
959 assert(dynamic_cast<A3*>(a5.getA1_3()) == 0);
960 assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3());
961
962 assert(dynamic_cast<A4*>(a5.getA1_3()) == 0);
963 assert(dynamic_cast<A4*>(a5.getA1_4()) == a5.getA4());
964 assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4());
965 assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4());
966
967 assert(dynamic_cast<A5*>(a5.getA1_3()) == 0);
968 assert(dynamic_cast<A5*>(a5.getA1_4()) == a5.getA5());
969 assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
970 assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
971 assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
972 assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5());
973
974 assert(dynamic_cast<A3*>(a6.getA1_6()) == 0);
975
976 assert(dynamic_cast<A4*>(a6.getA1_6()) == 0);
977
978 assert(dynamic_cast<A5*>(a6.getA1_6()) == 0);
979
980 assert(dynamic_cast<A6*>(a6.getA1_6()) == a6.getA6());
981
982 assert(dynamic_cast<A3*>(a7.getA1_3()) == 0);
983 assert(dynamic_cast<A3*>(a7.getA1_4()) == a7.getA3());
984 assert(dynamic_cast<A3*>(a7.getA2()) == a7.getA3());
985
986 assert(dynamic_cast<A4*>(a7.getA1_3()) == 0);
987 assert(dynamic_cast<A4*>(a7.getA1_4()) == a7.getA4());
988 assert(dynamic_cast<A4*>(a7.getA2()) == a7.getA4());
989 assert(dynamic_cast<A4*>(a7.getA3()) == a7.getA4());
990
991 assert(dynamic_cast<A5*>(a7.getA1_3()) == 0);
992 assert(dynamic_cast<A5*>(a7.getA1_4()) == a7.getA5());
993 assert(dynamic_cast<A5*>(a7.getA2()) == a7.getA5());
994 assert(dynamic_cast<A5*>(a7.getA3()) == a7.getA5());
995 assert(dynamic_cast<A5*>(a7.getA4()) == a7.getA5());
996
997 assert(dynamic_cast<A6*>(a7.getA1_3()) == 0);
998 assert(dynamic_cast<A6*>(a7.getA1_4()) == a7.getA6());
999 assert(dynamic_cast<A6*>(a7.getA1_6()) == a7.getA6());
1000 assert(dynamic_cast<A6*>(a7.getA2()) == a7.getA6());
1001 assert(dynamic_cast<A6*>(a7.getA3()) == a7.getA6());
1002 assert(dynamic_cast<A6*>(a7.getA4()) == a7.getA6());
1003 assert(dynamic_cast<A6*>(a7.getA5()) == a7.getA6());
1004
1005 assert(dynamic_cast<A7*>(a7.getA1_3()) == 0);
1006 assert(dynamic_cast<A7*>(a7.getA1_4()) == a7.getA7());
1007 assert(dynamic_cast<A7*>(a7.getA1_6()) == a7.getA7());
1008 assert(dynamic_cast<A7*>(a7.getA2()) == a7.getA7());
1009 assert(dynamic_cast<A7*>(a7.getA3()) == a7.getA7());
1010 assert(dynamic_cast<A7*>(a7.getA4()) == a7.getA7());
1011 assert(dynamic_cast<A7*>(a7.getA5()) == a7.getA7());
1012 assert(dynamic_cast<A7*>(a7.getA6()) == a7.getA7());
1013
1014 assert(dynamic_cast<A3*>(a8.getA1_3()) == 0);
1015 assert(dynamic_cast<A3*>(a8.getA1_4()) == a8.getA3());
1016 assert(dynamic_cast<A3*>(a8.getA2()) == a8.getA3());
1017
1018 assert(dynamic_cast<A4*>(a8.getA1_3()) == 0);
1019 assert(dynamic_cast<A4*>(a8.getA1_4()) == a8.getA4());
1020 assert(dynamic_cast<A4*>(a8.getA2()) == a8.getA4());
1021 assert(dynamic_cast<A4*>(a8.getA3()) == a8.getA4());
1022
1023 assert(dynamic_cast<A5*>(a8.getA1_3()) == 0);
1024 assert(dynamic_cast<A5*>(a8.getA1_4()) == a8.getA5());
1025 assert(dynamic_cast<A5*>(a8.getA2()) == a8.getA5());
1026 assert(dynamic_cast<A5*>(a8.getA3()) == a8.getA5());
1027 assert(dynamic_cast<A5*>(a8.getA4()) == a8.getA5());
1028
1029 assert(dynamic_cast<A6*>(a8.getA1_3()) == 0);
1030 assert(dynamic_cast<A6*>(a8.getA1_4()) == a8.getA6());
1031 assert(dynamic_cast<A6*>(a8.getA1_6()) == a8.getA6());
1032 assert(dynamic_cast<A6*>(a8.getA2()) == a8.getA6());
1033 assert(dynamic_cast<A6*>(a8.getA3()) == a8.getA6());
1034 assert(dynamic_cast<A6*>(a8.getA4()) == a8.getA6());
1035 assert(dynamic_cast<A6*>(a8.getA5()) == a8.getA6());
1036
1037 assert(dynamic_cast<A7*>(a8.getA1_3()) == 0);
1038 assert(dynamic_cast<A7*>(a8.getA1_4()) == a8.getA7());
1039 assert(dynamic_cast<A7*>(a8.getA1_6()) == a8.getA7());
1040 assert(dynamic_cast<A7*>(a8.getA2()) == a8.getA7());
1041 assert(dynamic_cast<A7*>(a8.getA3()) == a8.getA7());
1042 assert(dynamic_cast<A7*>(a8.getA4()) == a8.getA7());
1043 assert(dynamic_cast<A7*>(a8.getA5()) == a8.getA7());
1044 assert(dynamic_cast<A7*>(a8.getA6()) == a8.getA7());
1045
1046 assert(dynamic_cast<A8*>(a8.getA1_3()) == 0);
1047 assert(dynamic_cast<A8*>(a8.getA1_4()) == a8.getA8());
1048 assert(dynamic_cast<A8*>(a8.getA1_6()) == a8.getA8());
1049 assert(dynamic_cast<A8*>(a8.getA2()) == a8.getA8());
1050 assert(dynamic_cast<A8*>(a8.getA3()) == a8.getA8());
1051 assert(dynamic_cast<A8*>(a8.getA4()) == a8.getA8());
1052 assert(dynamic_cast<A8*>(a8.getA5()) == a8.getA8());
1053 assert(dynamic_cast<A8*>(a8.getA6()) == a8.getA8());
1054 assert(dynamic_cast<A8*>(a8.getA7()) == a8.getA8());
1055
1056 assert(dynamic_cast<A3*>(a9.getA1_9()) == 0);
1057
1058 assert(dynamic_cast<A4*>(a9.getA1_9()) == 0);
1059
1060 assert(dynamic_cast<A5*>(a9.getA1_9()) == 0);
1061
1062 assert(dynamic_cast<A6*>(a9.getA1_9()) == 0);
1063
1064 assert(dynamic_cast<A7*>(a9.getA1_9()) == 0);
1065
1066 assert(dynamic_cast<A8*>(a9.getA1_9()) == 0);
1067
1068 assert(dynamic_cast<A9*>(a9.getA1_9()) == a9.getA9());
1069
1070 assert(dynamic_cast<A3*>(a10.getA1_3()) == 0);
1071 assert(dynamic_cast<A3*>(a10.getA1_4()) == a10.getA3());
1072 assert(dynamic_cast<A3*>(a10.getA1_6()) == a10.getA3());
1073 assert(dynamic_cast<A3*>(a10.getA2()) == a10.getA3());
1074
1075 assert(dynamic_cast<A4*>(a10.getA1_3()) == 0);
1076 assert(dynamic_cast<A4*>(a10.getA1_4()) == a10.getA4());
1077 assert(dynamic_cast<A4*>(a10.getA1_6()) == a10.getA4());
1078 assert(dynamic_cast<A4*>(a10.getA2()) == a10.getA4());
1079 assert(dynamic_cast<A4*>(a10.getA3()) == a10.getA4());
1080
1081 assert(dynamic_cast<A5*>(a10.getA1_3()) == 0);
1082 assert(dynamic_cast<A5*>(a10.getA1_4()) == a10.getA5());
1083 assert(dynamic_cast<A5*>(a10.getA1_6()) == a10.getA5());
1084 assert(dynamic_cast<A5*>(a10.getA2()) == a10.getA5());
1085 assert(dynamic_cast<A5*>(a10.getA3()) == a10.getA5());
1086 assert(dynamic_cast<A5*>(a10.getA4()) == a10.getA5());
1087
1088 assert(dynamic_cast<A6*>(a10.getA1_3()) == 0);
1089 assert(dynamic_cast<A6*>(a10.getA1_4()) == a10.getA6());
1090 assert(dynamic_cast<A6*>(a10.getA1_6()) == a10.getA6());
1091 assert(dynamic_cast<A6*>(a10.getA2()) == a10.getA6());
1092 assert(dynamic_cast<A6*>(a10.getA3()) == a10.getA6());
1093 assert(dynamic_cast<A6*>(a10.getA4()) == a10.getA6());
1094 assert(dynamic_cast<A6*>(a10.getA5()) == a10.getA6());
1095
1096 assert(dynamic_cast<A7*>(a10.getA1_3()) == 0);
1097 assert(dynamic_cast<A7*>(a10.getA1_4()) == a10.getA7());
1098 assert(dynamic_cast<A7*>(a10.getA1_6()) == a10.getA7());
1099 assert(dynamic_cast<A7*>(a10.getA2()) == a10.getA7());
1100 assert(dynamic_cast<A7*>(a10.getA3()) == a10.getA7());
1101 assert(dynamic_cast<A7*>(a10.getA4()) == a10.getA7());
1102 assert(dynamic_cast<A7*>(a10.getA5()) == a10.getA7());
1103 assert(dynamic_cast<A7*>(a10.getA6()) == a10.getA7());
1104
1105 assert(dynamic_cast<A8*>(a10.getA1_3()) == 0);
1106 assert(dynamic_cast<A8*>(a10.getA1_4()) == a10.getA8());
1107 assert(dynamic_cast<A8*>(a10.getA1_6()) == a10.getA8());
1108 assert(dynamic_cast<A8*>(a10.getA2()) == a10.getA8());
1109 assert(dynamic_cast<A8*>(a10.getA3()) == a10.getA8());
1110 assert(dynamic_cast<A8*>(a10.getA4()) == a10.getA8());
1111 assert(dynamic_cast<A8*>(a10.getA5()) == a10.getA8());
1112 assert(dynamic_cast<A8*>(a10.getA6()) == a10.getA8());
1113 assert(dynamic_cast<A8*>(a10.getA7()) == a10.getA8());
1114
1115 assert(dynamic_cast<A9*>(a10.getA1_3()) == 0);
1116 assert(dynamic_cast<A9*>(a10.getA1_4()) == 0);
1117 assert(dynamic_cast<A9*>(a10.getA1_6()) == 0);
1118 assert(dynamic_cast<A9*>(a10.getA2()) == 0);
1119 assert(dynamic_cast<A9*>(a10.getA3()) == 0);
1120 assert(dynamic_cast<A9*>(a10.getA4()) == 0);
1121 assert(dynamic_cast<A9*>(a10.getA5()) == 0);
1122 assert(dynamic_cast<A9*>(a10.getA6()) == 0);
1123 assert(dynamic_cast<A9*>(a10.getA7()) == 0);
1124 assert(dynamic_cast<A9*>(a10.getA8()) == 0);
1125
1126 assert(dynamic_cast<A10*>(a10.getA1_3()) == 0);
1127 assert(dynamic_cast<A10*>(a10.getA1_4()) == a10.getA10());
1128 assert(dynamic_cast<A10*>(a10.getA1_6()) == a10.getA10());
1129 assert(dynamic_cast<A10*>(a10.getA2()) == a10.getA10());
1130 assert(dynamic_cast<A10*>(a10.getA3()) == a10.getA10());
1131 assert(dynamic_cast<A10*>(a10.getA4()) == a10.getA10());
1132 assert(dynamic_cast<A10*>(a10.getA5()) == a10.getA10());
1133 assert(dynamic_cast<A10*>(a10.getA6()) == a10.getA10());
1134 assert(dynamic_cast<A10*>(a10.getA7()) == a10.getA10());
1135 assert(dynamic_cast<A10*>(a10.getA8()) == a10.getA10());
1136
1137 assert(dynamic_cast<A3*>(a11.getA1_3()) == 0);
1138 assert(dynamic_cast<A3*>(a11.getA1_4()) == a11.getA3());
1139 assert(dynamic_cast<A3*>(a11.getA1_6()) == a11.getA3());
1140 assert(dynamic_cast<A3*>(a11.getA1_9()) == a11.getA3());
1141 assert(dynamic_cast<A3*>(a11.getA2()) == a11.getA3());
1142
1143 assert(dynamic_cast<A4*>(a11.getA1_3()) == 0);
1144 assert(dynamic_cast<A4*>(a11.getA1_4()) == a11.getA4());
1145 assert(dynamic_cast<A4*>(a11.getA1_6()) == a11.getA4());
1146 assert(dynamic_cast<A4*>(a11.getA1_9()) == a11.getA4());
1147 assert(dynamic_cast<A4*>(a11.getA2()) == a11.getA4());
1148 assert(dynamic_cast<A4*>(a11.getA3()) == a11.getA4());
1149
1150 assert(dynamic_cast<A5*>(a11.getA1_3()) == 0);
1151 assert(dynamic_cast<A5*>(a11.getA1_4()) == a11.getA5());
1152 assert(dynamic_cast<A5*>(a11.getA1_6()) == a11.getA5());
1153 assert(dynamic_cast<A5*>(a11.getA1_9()) == a11.getA5());
1154 assert(dynamic_cast<A5*>(a11.getA2()) == a11.getA5());
1155 assert(dynamic_cast<A5*>(a11.getA3()) == a11.getA5());
1156 assert(dynamic_cast<A5*>(a11.getA4()) == a11.getA5());
1157
1158 assert(dynamic_cast<A6*>(a11.getA1_3()) == 0);
1159 assert(dynamic_cast<A6*>(a11.getA1_4()) == a11.getA6());
1160 assert(dynamic_cast<A6*>(a11.getA1_6()) == a11.getA6());
1161 assert(dynamic_cast<A6*>(a11.getA1_9()) == a11.getA6());
1162 assert(dynamic_cast<A6*>(a11.getA2()) == a11.getA6());
1163 assert(dynamic_cast<A6*>(a11.getA3()) == a11.getA6());
1164 assert(dynamic_cast<A6*>(a11.getA4()) == a11.getA6());
1165 assert(dynamic_cast<A6*>(a11.getA5()) == a11.getA6());
1166
1167 assert(dynamic_cast<A7*>(a11.getA1_3()) == 0);
1168 assert(dynamic_cast<A7*>(a11.getA1_4()) == a11.getA7());
1169 assert(dynamic_cast<A7*>(a11.getA1_6()) == a11.getA7());
1170 assert(dynamic_cast<A7*>(a11.getA1_9()) == a11.getA7());
1171 assert(dynamic_cast<A7*>(a11.getA2()) == a11.getA7());
1172 assert(dynamic_cast<A7*>(a11.getA3()) == a11.getA7());
1173 assert(dynamic_cast<A7*>(a11.getA4()) == a11.getA7());
1174 assert(dynamic_cast<A7*>(a11.getA5()) == a11.getA7());
1175 assert(dynamic_cast<A7*>(a11.getA6()) == a11.getA7());
1176
1177 assert(dynamic_cast<A8*>(a11.getA1_3()) == 0);
1178 assert(dynamic_cast<A8*>(a11.getA1_4()) == a11.getA8());
1179 assert(dynamic_cast<A8*>(a11.getA1_6()) == a11.getA8());
1180 assert(dynamic_cast<A8*>(a11.getA1_9()) == a11.getA8());
1181 assert(dynamic_cast<A8*>(a11.getA2()) == a11.getA8());
1182 assert(dynamic_cast<A8*>(a11.getA3()) == a11.getA8());
1183 assert(dynamic_cast<A8*>(a11.getA4()) == a11.getA8());
1184 assert(dynamic_cast<A8*>(a11.getA5()) == a11.getA8());
1185 assert(dynamic_cast<A8*>(a11.getA6()) == a11.getA8());
1186 assert(dynamic_cast<A8*>(a11.getA7()) == a11.getA8());
1187
1188 assert(dynamic_cast<A9*>(a11.getA1_3()) == 0);
1189 assert(dynamic_cast<A9*>(a11.getA1_4()) == a11.getA9());
1190 assert(dynamic_cast<A9*>(a11.getA1_6()) == a11.getA9());
1191 assert(dynamic_cast<A9*>(a11.getA1_9()) == a11.getA9());
1192 assert(dynamic_cast<A9*>(a11.getA2()) == a11.getA9());
1193 assert(dynamic_cast<A9*>(a11.getA3()) == a11.getA9());
1194 assert(dynamic_cast<A9*>(a11.getA4()) == a11.getA9());
1195 assert(dynamic_cast<A9*>(a11.getA5()) == a11.getA9());
1196 assert(dynamic_cast<A9*>(a11.getA6()) == a11.getA9());
1197 assert(dynamic_cast<A9*>(a11.getA7()) == a11.getA9());
1198 assert(dynamic_cast<A9*>(a11.getA8()) == a11.getA9());
1199
1200 assert(dynamic_cast<A10*>(a11.getA1_3()) == 0);
1201 assert(dynamic_cast<A10*>(a11.getA1_4()) == 0);
1202 assert(dynamic_cast<A10*>(a11.getA1_6()) == 0);
1203 assert(dynamic_cast<A10*>(a11.getA1_9()) == 0);
1204 assert(dynamic_cast<A10*>(a11.getA2()) == 0);
1205 assert(dynamic_cast<A10*>(a11.getA3()) == 0);
1206 assert(dynamic_cast<A10*>(a11.getA4()) == 0);
1207 assert(dynamic_cast<A10*>(a11.getA5()) == 0);
1208 assert(dynamic_cast<A10*>(a11.getA6()) == 0);
1209 assert(dynamic_cast<A10*>(a11.getA7()) == 0);
1210 assert(dynamic_cast<A10*>(a11.getA8()) == 0);
1211 assert(dynamic_cast<A10*>(a11.getA9()) == 0);
1212
1213 assert(dynamic_cast<A11*>(a11.getA1_3()) == 0);
1214 assert(dynamic_cast<A11*>(a11.getA1_4()) == a11.getA11());
1215 assert(dynamic_cast<A11*>(a11.getA1_6()) == a11.getA11());
1216 assert(dynamic_cast<A11*>(a11.getA1_9()) == a11.getA11());
1217 assert(dynamic_cast<A11*>(a11.getA2()) == a11.getA11());
1218 assert(dynamic_cast<A11*>(a11.getA3()) == a11.getA11());
1219 assert(dynamic_cast<A11*>(a11.getA4()) == a11.getA11());
1220 assert(dynamic_cast<A11*>(a11.getA5()) == a11.getA11());
1221 assert(dynamic_cast<A11*>(a11.getA6()) == a11.getA11());
1222 assert(dynamic_cast<A11*>(a11.getA7()) == a11.getA11());
1223 assert(dynamic_cast<A11*>(a11.getA8()) == a11.getA11());
1224 assert(dynamic_cast<A11*>(a11.getA9()) == a11.getA11());
1225
1226 assert(dynamic_cast<A3*>(a12.getA1_3()) == 0);
1227 assert(dynamic_cast<A3*>(a12.getA1_4()) == a12.getA3());
1228 assert(dynamic_cast<A3*>(a12.getA1_6()) == a12.getA3());
1229 assert(dynamic_cast<A3*>(a12.getA1_9()) == a12.getA3());
1230 assert(dynamic_cast<A3*>(a12.getA2()) == a12.getA3());
1231
1232 assert(dynamic_cast<A4*>(a12.getA1_3()) == 0);
1233 assert(dynamic_cast<A4*>(a12.getA1_4()) == a12.getA4());
1234 assert(dynamic_cast<A4*>(a12.getA1_6()) == a12.getA4());
1235 assert(dynamic_cast<A4*>(a12.getA1_9()) == a12.getA4());
1236 assert(dynamic_cast<A4*>(a12.getA2()) == a12.getA4());
1237 assert(dynamic_cast<A4*>(a12.getA3()) == a12.getA4());
1238
1239 assert(dynamic_cast<A5*>(a12.getA1_3()) == 0);
1240 assert(dynamic_cast<A5*>(a12.getA1_4()) == a12.getA5());
1241 assert(dynamic_cast<A5*>(a12.getA1_6()) == a12.getA5());
1242 assert(dynamic_cast<A5*>(a12.getA1_9()) == a12.getA5());
1243 assert(dynamic_cast<A5*>(a12.getA2()) == a12.getA5());
1244 assert(dynamic_cast<A5*>(a12.getA3()) == a12.getA5());
1245 assert(dynamic_cast<A5*>(a12.getA4()) == a12.getA5());
1246
1247 assert(dynamic_cast<A6*>(a12.getA1_3()) == 0);
1248 assert(dynamic_cast<A6*>(a12.getA1_4()) == a12.getA6());
1249 assert(dynamic_cast<A6*>(a12.getA1_6()) == a12.getA6());
1250 assert(dynamic_cast<A6*>(a12.getA1_9()) == a12.getA6());
1251 assert(dynamic_cast<A6*>(a12.getA2()) == a12.getA6());
1252 assert(dynamic_cast<A6*>(a12.getA3()) == a12.getA6());
1253 assert(dynamic_cast<A6*>(a12.getA4()) == a12.getA6());
1254 assert(dynamic_cast<A6*>(a12.getA5()) == a12.getA6());
1255
1256 assert(dynamic_cast<A7*>(a12.getA1_3()) == 0);
1257 assert(dynamic_cast<A7*>(a12.getA1_4()) == a12.getA7());
1258 assert(dynamic_cast<A7*>(a12.getA1_6()) == a12.getA7());
1259 assert(dynamic_cast<A7*>(a12.getA1_9()) == a12.getA7());
1260 assert(dynamic_cast<A7*>(a12.getA2()) == a12.getA7());
1261 assert(dynamic_cast<A7*>(a12.getA3()) == a12.getA7());
1262 assert(dynamic_cast<A7*>(a12.getA4()) == a12.getA7());
1263 assert(dynamic_cast<A7*>(a12.getA5()) == a12.getA7());
1264 assert(dynamic_cast<A7*>(a12.getA6()) == a12.getA7());
1265
1266 assert(dynamic_cast<A8*>(a12.getA1_3()) == 0);
1267 assert(dynamic_cast<A8*>(a12.getA1_4()) == a12.getA8());
1268 assert(dynamic_cast<A8*>(a12.getA1_6()) == a12.getA8());
1269 assert(dynamic_cast<A8*>(a12.getA1_9()) == a12.getA8());
1270 assert(dynamic_cast<A8*>(a12.getA2()) == a12.getA8());
1271 assert(dynamic_cast<A8*>(a12.getA3()) == a12.getA8());
1272 assert(dynamic_cast<A8*>(a12.getA4()) == a12.getA8());
1273 assert(dynamic_cast<A8*>(a12.getA5()) == a12.getA8());
1274 assert(dynamic_cast<A8*>(a12.getA6()) == a12.getA8());
1275 assert(dynamic_cast<A8*>(a12.getA7()) == a12.getA8());
1276
1277 assert(dynamic_cast<A9*>(a12.getA1_3()) == 0);
1278 assert(dynamic_cast<A9*>(a12.getA1_4()) == a12.getA9());
1279 assert(dynamic_cast<A9*>(a12.getA1_6()) == a12.getA9());
1280 assert(dynamic_cast<A9*>(a12.getA1_9()) == a12.getA9());
1281 assert(dynamic_cast<A9*>(a12.getA2()) == a12.getA9());
1282 assert(dynamic_cast<A9*>(a12.getA3()) == a12.getA9());
1283 assert(dynamic_cast<A9*>(a12.getA4()) == a12.getA9());
1284 assert(dynamic_cast<A9*>(a12.getA5()) == a12.getA9());
1285 assert(dynamic_cast<A9*>(a12.getA6()) == a12.getA9());
1286 assert(dynamic_cast<A9*>(a12.getA7()) == a12.getA9());
1287 assert(dynamic_cast<A9*>(a12.getA8()) == a12.getA9());
1288
1289 assert(dynamic_cast<A10*>(a12.getA1_3()) == 0);
1290 assert(dynamic_cast<A10*>(a12.getA1_4()) == a12.getA10());
1291 assert(dynamic_cast<A10*>(a12.getA1_6()) == a12.getA10());
1292 assert(dynamic_cast<A10*>(a12.getA1_9()) == a12.getA10());
1293 assert(dynamic_cast<A10*>(a12.getA2()) == a12.getA10());
1294 assert(dynamic_cast<A10*>(a12.getA3()) == a12.getA10());
1295 assert(dynamic_cast<A10*>(a12.getA4()) == a12.getA10());
1296 assert(dynamic_cast<A10*>(a12.getA5()) == a12.getA10());
1297 assert(dynamic_cast<A10*>(a12.getA6()) == a12.getA10());
1298 assert(dynamic_cast<A10*>(a12.getA7()) == a12.getA10());
1299 assert(dynamic_cast<A10*>(a12.getA8()) == a12.getA10());
1300 assert(dynamic_cast<A10*>(a12.getA9()) == a12.getA10());
1301
1302 assert(dynamic_cast<A11*>(a12.getA1_3()) == 0);
1303 assert(dynamic_cast<A11*>(a12.getA1_4()) == a12.getA11());
1304 assert(dynamic_cast<A11*>(a12.getA1_6()) == a12.getA11());
1305 assert(dynamic_cast<A11*>(a12.getA1_9()) == a12.getA11());
1306 assert(dynamic_cast<A11*>(a12.getA2()) == a12.getA11());
1307 assert(dynamic_cast<A11*>(a12.getA3()) == a12.getA11());
1308 assert(dynamic_cast<A11*>(a12.getA4()) == a12.getA11());
1309 assert(dynamic_cast<A11*>(a12.getA5()) == a12.getA11());
1310 assert(dynamic_cast<A11*>(a12.getA6()) == a12.getA11());
1311 assert(dynamic_cast<A11*>(a12.getA7()) == a12.getA11());
1312 assert(dynamic_cast<A11*>(a12.getA8()) == a12.getA11());
1313 assert(dynamic_cast<A11*>(a12.getA9()) == a12.getA11());
1314 assert(dynamic_cast<A11*>(a12.getA10()) == a12.getA11());
1315
1316 assert(dynamic_cast<A12*>(a12.getA1_3()) == 0);
1317 assert(dynamic_cast<A12*>(a12.getA1_4()) == a12.getA12());
1318 assert(dynamic_cast<A12*>(a12.getA1_6()) == a12.getA12());
1319 assert(dynamic_cast<A12*>(a12.getA1_9()) == a12.getA12());
1320 assert(dynamic_cast<A12*>(a12.getA2()) == a12.getA12());
1321 assert(dynamic_cast<A12*>(a12.getA3()) == a12.getA12());
1322 assert(dynamic_cast<A12*>(a12.getA4()) == a12.getA12());
1323 assert(dynamic_cast<A12*>(a12.getA5()) == a12.getA12());
1324 assert(dynamic_cast<A12*>(a12.getA6()) == a12.getA12());
1325 assert(dynamic_cast<A12*>(a12.getA7()) == a12.getA12());
1326 assert(dynamic_cast<A12*>(a12.getA8()) == a12.getA12());
1327 assert(dynamic_cast<A12*>(a12.getA9()) == a12.getA12());
1328 assert(dynamic_cast<A12*>(a12.getA10()) == a12.getA12());
1329 assert(dynamic_cast<A12*>(a12.getA11()) == a12.getA12());
1330
1331 assert(dynamic_cast<A3*>(a13.getA1_3()) == 0);
1332 assert(dynamic_cast<A3*>(a13.getA1_4()) == a13.getA3());
1333 assert(dynamic_cast<A3*>(a13.getA1_6()) == a13.getA3());
1334 assert(dynamic_cast<A3*>(a13.getA1_9()) == a13.getA3());
1335 assert(dynamic_cast<A3*>(a13.getA2()) == a13.getA3());
1336
1337 assert(dynamic_cast<A4*>(a13.getA1_3()) == 0);
1338 assert(dynamic_cast<A4*>(a13.getA1_4()) == a13.getA4());
1339 assert(dynamic_cast<A4*>(a13.getA1_6()) == a13.getA4());
1340 assert(dynamic_cast<A4*>(a13.getA1_9()) == a13.getA4());
1341 assert(dynamic_cast<A4*>(a13.getA2()) == a13.getA4());
1342 assert(dynamic_cast<A4*>(a13.getA3()) == a13.getA4());
1343
1344 assert(dynamic_cast<A5*>(a13.getA1_3()) == 0);
1345 assert(dynamic_cast<A5*>(a13.getA1_4()) == a13.getA5());
1346 assert(dynamic_cast<A5*>(a13.getA1_6()) == a13.getA5());
1347 assert(dynamic_cast<A5*>(a13.getA1_9()) == a13.getA5());
1348 assert(dynamic_cast<A5*>(a13.getA2()) == a13.getA5());
1349 assert(dynamic_cast<A5*>(a13.getA3()) == a13.getA5());
1350 assert(dynamic_cast<A5*>(a13.getA4()) == a13.getA5());
1351
1352 assert(dynamic_cast<A6*>(a13.getA1_3()) == 0);
1353 assert(dynamic_cast<A6*>(a13.getA1_4()) == a13.getA6());
1354 assert(dynamic_cast<A6*>(a13.getA1_6()) == a13.getA6());
1355 assert(dynamic_cast<A6*>(a13.getA1_9()) == a13.getA6());
1356 assert(dynamic_cast<A6*>(a13.getA2()) == a13.getA6());
1357 assert(dynamic_cast<A6*>(a13.getA3()) == a13.getA6());
1358 assert(dynamic_cast<A6*>(a13.getA4()) == a13.getA6());
1359 assert(dynamic_cast<A6*>(a13.getA5()) == a13.getA6());
1360
1361 assert(dynamic_cast<A7*>(a13.getA1_3()) == 0);
1362 assert(dynamic_cast<A7*>(a13.getA1_4()) == a13.getA7());
1363 assert(dynamic_cast<A7*>(a13.getA1_6()) == a13.getA7());
1364 assert(dynamic_cast<A7*>(a13.getA1_9()) == a13.getA7());
1365 assert(dynamic_cast<A7*>(a13.getA2()) == a13.getA7());
1366 assert(dynamic_cast<A7*>(a13.getA3()) == a13.getA7());
1367 assert(dynamic_cast<A7*>(a13.getA4()) == a13.getA7());
1368 assert(dynamic_cast<A7*>(a13.getA5()) == a13.getA7());
1369 assert(dynamic_cast<A7*>(a13.getA6()) == a13.getA7());
1370
1371 assert(dynamic_cast<A8*>(a13.getA1_3()) == 0);
1372 assert(dynamic_cast<A8*>(a13.getA1_4()) == a13.getA8());
1373 assert(dynamic_cast<A8*>(a13.getA1_6()) == a13.getA8());
1374 assert(dynamic_cast<A8*>(a13.getA1_9()) == a13.getA8());
1375 assert(dynamic_cast<A8*>(a13.getA2()) == a13.getA8());
1376 assert(dynamic_cast<A8*>(a13.getA3()) == a13.getA8());
1377 assert(dynamic_cast<A8*>(a13.getA4()) == a13.getA8());
1378 assert(dynamic_cast<A8*>(a13.getA5()) == a13.getA8());
1379 assert(dynamic_cast<A8*>(a13.getA6()) == a13.getA8());
1380 assert(dynamic_cast<A8*>(a13.getA7()) == a13.getA8());
1381
1382 assert(dynamic_cast<A9*>(a13.getA1_3()) == 0);
1383 assert(dynamic_cast<A9*>(a13.getA1_4()) == a13.getA9());
1384 assert(dynamic_cast<A9*>(a13.getA1_6()) == a13.getA9());
1385 assert(dynamic_cast<A9*>(a13.getA1_9()) == a13.getA9());
1386 assert(dynamic_cast<A9*>(a13.getA2()) == a13.getA9());
1387 assert(dynamic_cast<A9*>(a13.getA3()) == a13.getA9());
1388 assert(dynamic_cast<A9*>(a13.getA4()) == a13.getA9());
1389 assert(dynamic_cast<A9*>(a13.getA5()) == a13.getA9());
1390 assert(dynamic_cast<A9*>(a13.getA6()) == a13.getA9());
1391 assert(dynamic_cast<A9*>(a13.getA7()) == a13.getA9());
1392 assert(dynamic_cast<A9*>(a13.getA8()) == a13.getA9());
1393
1394 assert(dynamic_cast<A10*>(a13.getA1_3()) == 0);
1395 assert(dynamic_cast<A10*>(a13.getA1_4()) == a13.getA10());
1396 assert(dynamic_cast<A10*>(a13.getA1_6()) == a13.getA10());
1397 assert(dynamic_cast<A10*>(a13.getA1_9()) == a13.getA10());
1398 assert(dynamic_cast<A10*>(a13.getA2()) == a13.getA10());
1399 assert(dynamic_cast<A10*>(a13.getA3()) == a13.getA10());
1400 assert(dynamic_cast<A10*>(a13.getA4()) == a13.getA10());
1401 assert(dynamic_cast<A10*>(a13.getA5()) == a13.getA10());
1402 assert(dynamic_cast<A10*>(a13.getA6()) == a13.getA10());
1403 assert(dynamic_cast<A10*>(a13.getA7()) == a13.getA10());
1404 assert(dynamic_cast<A10*>(a13.getA8()) == a13.getA10());
1405 assert(dynamic_cast<A10*>(a13.getA9()) == a13.getA10());
1406
1407 assert(dynamic_cast<A11*>(a13.getA1_3()) == 0);
1408 assert(dynamic_cast<A11*>(a13.getA1_4()) == a13.getA11());
1409 assert(dynamic_cast<A11*>(a13.getA1_6()) == a13.getA11());
1410 assert(dynamic_cast<A11*>(a13.getA1_9()) == a13.getA11());
1411 assert(dynamic_cast<A11*>(a13.getA2()) == a13.getA11());
1412 assert(dynamic_cast<A11*>(a13.getA3()) == a13.getA11());
1413 assert(dynamic_cast<A11*>(a13.getA4()) == a13.getA11());
1414 assert(dynamic_cast<A11*>(a13.getA5()) == a13.getA11());
1415 assert(dynamic_cast<A11*>(a13.getA6()) == a13.getA11());
1416 assert(dynamic_cast<A11*>(a13.getA7()) == a13.getA11());
1417 assert(dynamic_cast<A11*>(a13.getA8()) == a13.getA11());
1418 assert(dynamic_cast<A11*>(a13.getA9()) == a13.getA11());
1419 assert(dynamic_cast<A11*>(a13.getA10()) == a13.getA11());
1420
1421 assert(dynamic_cast<A12*>(a13.getA1_3()) == 0);
1422 assert(dynamic_cast<A12*>(a13.getA1_4()) == a13.getA12());
1423 assert(dynamic_cast<A12*>(a13.getA1_6()) == a13.getA12());
1424 assert(dynamic_cast<A12*>(a13.getA1_9()) == a13.getA12());
1425 assert(dynamic_cast<A12*>(a13.getA2()) == a13.getA12());
1426 assert(dynamic_cast<A12*>(a13.getA3()) == a13.getA12());
1427 assert(dynamic_cast<A12*>(a13.getA4()) == a13.getA12());
1428 assert(dynamic_cast<A12*>(a13.getA5()) == a13.getA12());
1429 assert(dynamic_cast<A12*>(a13.getA6()) == a13.getA12());
1430 assert(dynamic_cast<A12*>(a13.getA7()) == a13.getA12());
1431 assert(dynamic_cast<A12*>(a13.getA8()) == a13.getA12());
1432 assert(dynamic_cast<A12*>(a13.getA9()) == a13.getA12());
1433 assert(dynamic_cast<A12*>(a13.getA10()) == a13.getA12());
1434 assert(dynamic_cast<A12*>(a13.getA11()) == a13.getA12());
1435
1436 assert(dynamic_cast<A13*>(a13.getA1_3()) == 0);
1437 assert(dynamic_cast<A13*>(a13.getA1_4()) == a13.getA13());
1438 assert(dynamic_cast<A13*>(a13.getA1_6()) == a13.getA13());
1439 assert(dynamic_cast<A13*>(a13.getA1_9()) == a13.getA13());
1440 assert(dynamic_cast<A13*>(a13.getA2()) == a13.getA13());
1441 assert(dynamic_cast<A13*>(a13.getA3()) == a13.getA13());
1442 assert(dynamic_cast<A13*>(a13.getA4()) == a13.getA13());
1443 assert(dynamic_cast<A13*>(a13.getA5()) == a13.getA13());
1444 assert(dynamic_cast<A13*>(a13.getA6()) == a13.getA13());
1445 assert(dynamic_cast<A13*>(a13.getA7()) == a13.getA13());
1446 assert(dynamic_cast<A13*>(a13.getA8()) == a13.getA13());
1447 assert(dynamic_cast<A13*>(a13.getA9()) == a13.getA13());
1448 assert(dynamic_cast<A13*>(a13.getA10()) == a13.getA13());
1449 assert(dynamic_cast<A13*>(a13.getA11()) == a13.getA13());
1450 assert(dynamic_cast<A13*>(a13.getA12()) == a13.getA13());
1451}
1452
1453} // t2
1454
1455namespace t3
1456{
1457
1458struct A1
1459{
1460 char _[43981];
1461 virtual ~A1() {}
1462
1463 A1* getA1() {return this;}
1464};
1465
1466struct A2
1467{
1468 char _[34981];
1469 virtual ~A2() {}
1470
1471 A2* getA2() {return this;}
1472};
1473
1474struct A3
1475 : public A1,
1476 protected virtual A2
1477{
1478 char _[93481];
1479 virtual ~A3() {}
1480
1481 A1* getA1_3() {return A1::getA1();}
1482 A2* getA2() {return A2::getA2();}
1483 A3* getA3() {return this;}
1484};
1485
1486struct A4
1487 : public virtual A2,
1488 public A1
1489{
1490 char _[13489];
1491 virtual ~A4() {}
1492
1493 A1* getA1_4() {return A1::getA1();}
1494 A2* getA2() {return A2::getA2();}
1495 A4* getA4() {return this;}
1496};
1497
1498struct A5
1499 : public A3,
1500 public A4
1501{
1502 char _[13489];
1503 virtual ~A5() {}
1504
1505 A1* getA1_3() {return A3::getA1();}
1506 A1* getA1_4() {return A4::getA1();}
1507 A2* getA2() {return A3::getA2();}
1508 A3* getA3() {return A3::getA3();}
1509 A4* getA4() {return A4::getA4();}
1510 A5* getA5() {return this;}
1511};
1512
1513struct A6
1514 : public A1
1515{
1516 char _[81349];
1517 virtual ~A6() {}
1518
1519 A1* getA1_6() {return A1::getA1();}
1520 A6* getA6() {return this;}
1521};
1522
1523struct A7
1524 : public A5,
1525 public A6
1526{
1527 char _[34819];
1528 virtual ~A7() {}
1529
1530 A1* getA1_3() {return A5::getA1_3();}
1531 A1* getA1_4() {return A5::getA1_4();}
1532 A1* getA1_6() {return A6::getA1_6();}
1533 A2* getA2() {return A5::getA2();}
1534 A3* getA3() {return A5::getA3();}
1535 A4* getA4() {return A5::getA4();}
1536 A5* getA5() {return A5::getA5();}
1537 A6* getA6() {return A6::getA6();}
1538 A7* getA7() {return this;}
1539};
1540
1541struct A8
1542 : public A7
1543{
1544 char _[3489];
1545 virtual ~A8() {}
1546
1547 A1* getA1_3() {return A7::getA1_3();}
1548 A1* getA1_4() {return A7::getA1_4();}
1549 A1* getA1_6() {return A7::getA1_6();}
1550 A2* getA2() {return A7::getA2();}
1551 A3* getA3() {return A7::getA3();}
1552 A4* getA4() {return A7::getA4();}
1553 A5* getA5() {return A7::getA5();}
1554 A6* getA6() {return A7::getA6();}
1555 A7* getA7() {return A7::getA7();}
1556 A8* getA8() {return this;}
1557};
1558
1559struct A9
1560 : public A1
1561{
1562 char _[3481];
1563 virtual ~A9() {}
1564
1565 A1* getA1_9() {return A1::getA1();}
1566 A9* getA9() {return this;}
1567};
1568
1569struct A10
1570 : public virtual A8
1571{
1572 char _[4831];
1573 virtual ~A10() {}
1574
1575 A1* getA1_3() {return A8::getA1_3();}
1576 A1* getA1_4() {return A8::getA1_4();}
1577 A1* getA1_6() {return A8::getA1_6();}
1578 A2* getA2() {return A8::getA2();}
1579 A3* getA3() {return A8::getA3();}
1580 A4* getA4() {return A8::getA4();}
1581 A5* getA5() {return A8::getA5();}
1582 A6* getA6() {return A8::getA6();}
1583 A7* getA7() {return A8::getA7();}
1584 A8* getA8() {return A8::getA8();}
1585 A10* getA10() {return this;}
1586};
1587
1588struct A11
1589 : public virtual A8,
1590 public A9
1591{
1592 char _[6483];
1593 virtual ~A11() {}
1594
1595 A1* getA1_3() {return A8::getA1_3();}
1596 A1* getA1_4() {return A8::getA1_4();}
1597 A1* getA1_6() {return A8::getA1_6();}
1598 A1* getA1_9() {return A9::getA1_9();}
1599 A2* getA2() {return A8::getA2();}
1600 A3* getA3() {return A8::getA3();}
1601 A4* getA4() {return A8::getA4();}
1602 A5* getA5() {return A8::getA5();}
1603 A6* getA6() {return A8::getA6();}
1604 A7* getA7() {return A8::getA7();}
1605 A8* getA8() {return A8::getA8();}
1606 A9* getA9() {return A9::getA9();}
1607 A11* getA11() {return this;}
1608};
1609
1610struct A12
1611 : public A10,
1612 public A11
1613{
1614 char _[2283];
1615 virtual ~A12() {}
1616
1617 A1* getA1_3() {return A10::getA1_3();}
1618 A1* getA1_4() {return A10::getA1_4();}
1619 A1* getA1_6() {return A10::getA1_6();}
1620 A1* getA1_9() {return A11::getA1_9();}
1621 A2* getA2() {return A10::getA2();}
1622 A3* getA3() {return A10::getA3();}
1623 A4* getA4() {return A10::getA4();}
1624 A5* getA5() {return A10::getA5();}
1625 A6* getA6() {return A10::getA6();}
1626 A7* getA7() {return A10::getA7();}
1627 A8* getA8() {return A10::getA8();}
1628 A9* getA9() {return A11::getA9();}
1629 A10* getA10() {return A10::getA10();}
1630 A11* getA11() {return A11::getA11();}
1631 A12* getA12() {return this;}
1632};
1633
1634struct A13
1635 : public A12
1636{
1637 char _[1283];
1638 virtual ~A13() {}
1639
1640 A1* getA1_3() {return A12::getA1_3();}
1641 A1* getA1_4() {return A12::getA1_4();}
1642 A1* getA1_6() {return A12::getA1_6();}
1643 A1* getA1_9() {return A12::getA1_9();}
1644 A2* getA2() {return A12::getA2();}
1645 A3* getA3() {return A12::getA3();}
1646 A4* getA4() {return A12::getA4();}
1647 A5* getA5() {return A12::getA5();}
1648 A6* getA6() {return A12::getA6();}
1649 A7* getA7() {return A12::getA7();}
1650 A8* getA8() {return A12::getA8();}
1651 A9* getA9() {return A12::getA9();}
1652 A10* getA10() {return A12::getA10();}
1653 A11* getA11() {return A12::getA11();}
1654 A12* getA12() {return A12::getA12();}
1655 A13* getA13() {return this;}
1656};
1657
Ben Craigeca353d2016-03-04 14:25:13 +00001658A3 a3;
1659A4 a4;
1660A5 a5;
1661A6 a6;
1662A7 a7;
1663A8 a8;
1664A9 a9;
1665A10 a10;
1666A11 a11;
1667A12 a12;
1668A13 a13;
1669
Howard Hinnant13093662012-01-16 00:13:46 +00001670void test()
1671{
Howard Hinnant13093662012-01-16 00:13:46 +00001672 assert(dynamic_cast<A3*>(a3.getA1_3()) == a3.getA3());
1673 assert(dynamic_cast<A3*>(a3.getA2()) == 0);
1674
1675 assert(dynamic_cast<A3*>(a4.getA1_4()) == 0);
1676 assert(dynamic_cast<A3*>(a4.getA2()) == 0);
1677 assert(dynamic_cast<A4*>(a4.getA1_4()) == a4.getA4());
1678 assert(dynamic_cast<A4*>(a4.getA2()) == a4.getA4());
1679
1680 assert(dynamic_cast<A3*>(a5.getA1_3()) == a5.getA3());
1681 assert(dynamic_cast<A3*>(a5.getA2()) == a5.getA3());
1682
1683 assert(dynamic_cast<A4*>(a5.getA1_3()) == a5.getA4());
1684 assert(dynamic_cast<A4*>(a5.getA1_4()) == a5.getA4());
1685 assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4());
1686 assert(dynamic_cast<A4*>(a5.getA3()) == a5.getA4());
1687
1688 assert(dynamic_cast<A5*>(a5.getA1_3()) == a5.getA5());
1689 assert(dynamic_cast<A5*>(a5.getA1_4()) == a5.getA5());
1690 assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
1691 assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
1692 assert(dynamic_cast<A5*>(a5.getA3()) == a5.getA5());
1693 assert(dynamic_cast<A5*>(a5.getA4()) == a5.getA5());
1694
1695 assert(dynamic_cast<A3*>(a6.getA1_6()) == 0);
1696
1697 assert(dynamic_cast<A4*>(a6.getA1_6()) == 0);
1698
1699 assert(dynamic_cast<A5*>(a6.getA1_6()) == 0);
1700
1701 assert(dynamic_cast<A6*>(a6.getA1_6()) == a6.getA6());
1702
1703 assert(dynamic_cast<A3*>(a7.getA1_3()) == a7.getA3());
1704 assert(dynamic_cast<A3*>(a7.getA1_4()) == a7.getA3());
1705 assert(dynamic_cast<A3*>(a7.getA2()) == a7.getA3());
1706
1707 assert(dynamic_cast<A4*>(a7.getA1_3()) == a7.getA4());
1708 assert(dynamic_cast<A4*>(a7.getA1_4()) == a7.getA4());
1709 assert(dynamic_cast<A4*>(a7.getA2()) == a7.getA4());
1710 assert(dynamic_cast<A4*>(a7.getA3()) == a7.getA4());
1711
1712 assert(dynamic_cast<A5*>(a7.getA1_3()) == a7.getA5());
1713 assert(dynamic_cast<A5*>(a7.getA1_4()) == a7.getA5());
1714 assert(dynamic_cast<A5*>(a7.getA2()) == a7.getA5());
1715 assert(dynamic_cast<A5*>(a7.getA3()) == a7.getA5());
1716 assert(dynamic_cast<A5*>(a7.getA4()) == a7.getA5());
1717
1718 assert(dynamic_cast<A6*>(a7.getA1_3()) == a7.getA6());
1719 assert(dynamic_cast<A6*>(a7.getA1_4()) == a7.getA6());
1720 assert(dynamic_cast<A6*>(a7.getA1_6()) == a7.getA6());
1721 assert(dynamic_cast<A6*>(a7.getA2()) == a7.getA6());
1722 assert(dynamic_cast<A6*>(a7.getA3()) == a7.getA6());
1723 assert(dynamic_cast<A6*>(a7.getA4()) == a7.getA6());
1724 assert(dynamic_cast<A6*>(a7.getA5()) == a7.getA6());
1725
1726 assert(dynamic_cast<A7*>(a7.getA1_3()) == a7.getA7());
1727 assert(dynamic_cast<A7*>(a7.getA1_4()) == a7.getA7());
1728 assert(dynamic_cast<A7*>(a7.getA1_6()) == a7.getA7());
1729 assert(dynamic_cast<A7*>(a7.getA2()) == a7.getA7());
1730 assert(dynamic_cast<A7*>(a7.getA3()) == a7.getA7());
1731 assert(dynamic_cast<A7*>(a7.getA4()) == a7.getA7());
1732 assert(dynamic_cast<A7*>(a7.getA5()) == a7.getA7());
1733 assert(dynamic_cast<A7*>(a7.getA6()) == a7.getA7());
1734
1735 assert(dynamic_cast<A3*>(a8.getA1_3()) == a8.getA3());
1736 assert(dynamic_cast<A3*>(a8.getA1_4()) == a8.getA3());
1737 assert(dynamic_cast<A3*>(a8.getA2()) == a8.getA3());
1738
1739 assert(dynamic_cast<A4*>(a8.getA1_3()) == a8.getA4());
1740 assert(dynamic_cast<A4*>(a8.getA1_4()) == a8.getA4());
1741 assert(dynamic_cast<A4*>(a8.getA2()) == a8.getA4());
1742 assert(dynamic_cast<A4*>(a8.getA3()) == a8.getA4());
1743
1744 assert(dynamic_cast<A5*>(a8.getA1_3()) == a8.getA5());
1745 assert(dynamic_cast<A5*>(a8.getA1_4()) == a8.getA5());
1746 assert(dynamic_cast<A5*>(a8.getA2()) == a8.getA5());
1747 assert(dynamic_cast<A5*>(a8.getA3()) == a8.getA5());
1748 assert(dynamic_cast<A5*>(a8.getA4()) == a8.getA5());
1749
1750 assert(dynamic_cast<A6*>(a8.getA1_3()) == a8.getA6());
1751 assert(dynamic_cast<A6*>(a8.getA1_4()) == a8.getA6());
1752 assert(dynamic_cast<A6*>(a8.getA1_6()) == a8.getA6());
1753 assert(dynamic_cast<A6*>(a8.getA2()) == a8.getA6());
1754 assert(dynamic_cast<A6*>(a8.getA3()) == a8.getA6());
1755 assert(dynamic_cast<A6*>(a8.getA4()) == a8.getA6());
1756 assert(dynamic_cast<A6*>(a8.getA5()) == a8.getA6());
1757
1758 assert(dynamic_cast<A7*>(a8.getA1_3()) == a8.getA7());
1759 assert(dynamic_cast<A7*>(a8.getA1_4()) == a8.getA7());
1760 assert(dynamic_cast<A7*>(a8.getA1_6()) == a8.getA7());
1761 assert(dynamic_cast<A7*>(a8.getA2()) == a8.getA7());
1762 assert(dynamic_cast<A7*>(a8.getA3()) == a8.getA7());
1763 assert(dynamic_cast<A7*>(a8.getA4()) == a8.getA7());
1764 assert(dynamic_cast<A7*>(a8.getA5()) == a8.getA7());
1765 assert(dynamic_cast<A7*>(a8.getA6()) == a8.getA7());
1766
1767 assert(dynamic_cast<A8*>(a8.getA1_3()) == a8.getA8());
1768 assert(dynamic_cast<A8*>(a8.getA1_4()) == a8.getA8());
1769 assert(dynamic_cast<A8*>(a8.getA1_6()) == a8.getA8());
1770 assert(dynamic_cast<A8*>(a8.getA2()) == a8.getA8());
1771 assert(dynamic_cast<A8*>(a8.getA3()) == a8.getA8());
1772 assert(dynamic_cast<A8*>(a8.getA4()) == a8.getA8());
1773 assert(dynamic_cast<A8*>(a8.getA5()) == a8.getA8());
1774 assert(dynamic_cast<A8*>(a8.getA6()) == a8.getA8());
1775 assert(dynamic_cast<A8*>(a8.getA7()) == a8.getA8());
1776
1777 assert(dynamic_cast<A3*>(a9.getA1_9()) == 0);
1778
1779 assert(dynamic_cast<A4*>(a9.getA1_9()) == 0);
1780
1781 assert(dynamic_cast<A5*>(a9.getA1_9()) == 0);
1782
1783 assert(dynamic_cast<A6*>(a9.getA1_9()) == 0);
1784
1785 assert(dynamic_cast<A7*>(a9.getA1_9()) == 0);
1786
1787 assert(dynamic_cast<A8*>(a9.getA1_9()) == 0);
1788
1789 assert(dynamic_cast<A9*>(a9.getA1_9()) == a9.getA9());
1790
1791 assert(dynamic_cast<A3*>(a10.getA1_3()) == a10.getA3());
1792 assert(dynamic_cast<A3*>(a10.getA1_4()) == a10.getA3());
1793 assert(dynamic_cast<A3*>(a10.getA1_6()) == a10.getA3());
1794 assert(dynamic_cast<A3*>(a10.getA2()) == a10.getA3());
1795
1796 assert(dynamic_cast<A4*>(a10.getA1_3()) == a10.getA4());
1797 assert(dynamic_cast<A4*>(a10.getA1_4()) == a10.getA4());
1798 assert(dynamic_cast<A4*>(a10.getA1_6()) == a10.getA4());
1799 assert(dynamic_cast<A4*>(a10.getA2()) == a10.getA4());
1800 assert(dynamic_cast<A4*>(a10.getA3()) == a10.getA4());
1801
1802 assert(dynamic_cast<A5*>(a10.getA1_3()) == a10.getA5());
1803 assert(dynamic_cast<A5*>(a10.getA1_4()) == a10.getA5());
1804 assert(dynamic_cast<A5*>(a10.getA1_6()) == a10.getA5());
1805 assert(dynamic_cast<A5*>(a10.getA2()) == a10.getA5());
1806 assert(dynamic_cast<A5*>(a10.getA3()) == a10.getA5());
1807 assert(dynamic_cast<A5*>(a10.getA4()) == a10.getA5());
1808
1809 assert(dynamic_cast<A6*>(a10.getA1_3()) == a10.getA6());
1810 assert(dynamic_cast<A6*>(a10.getA1_4()) == a10.getA6());
1811 assert(dynamic_cast<A6*>(a10.getA1_6()) == a10.getA6());
1812 assert(dynamic_cast<A6*>(a10.getA2()) == a10.getA6());
1813 assert(dynamic_cast<A6*>(a10.getA3()) == a10.getA6());
1814 assert(dynamic_cast<A6*>(a10.getA4()) == a10.getA6());
1815 assert(dynamic_cast<A6*>(a10.getA5()) == a10.getA6());
1816
1817 assert(dynamic_cast<A7*>(a10.getA1_3()) == a10.getA7());
1818 assert(dynamic_cast<A7*>(a10.getA1_4()) == a10.getA7());
1819 assert(dynamic_cast<A7*>(a10.getA1_6()) == a10.getA7());
1820 assert(dynamic_cast<A7*>(a10.getA2()) == a10.getA7());
1821 assert(dynamic_cast<A7*>(a10.getA3()) == a10.getA7());
1822 assert(dynamic_cast<A7*>(a10.getA4()) == a10.getA7());
1823 assert(dynamic_cast<A7*>(a10.getA5()) == a10.getA7());
1824 assert(dynamic_cast<A7*>(a10.getA6()) == a10.getA7());
1825
1826 assert(dynamic_cast<A8*>(a10.getA1_3()) == a10.getA8());
1827 assert(dynamic_cast<A8*>(a10.getA1_4()) == a10.getA8());
1828 assert(dynamic_cast<A8*>(a10.getA1_6()) == a10.getA8());
1829 assert(dynamic_cast<A8*>(a10.getA2()) == a10.getA8());
1830 assert(dynamic_cast<A8*>(a10.getA3()) == a10.getA8());
1831 assert(dynamic_cast<A8*>(a10.getA4()) == a10.getA8());
1832 assert(dynamic_cast<A8*>(a10.getA5()) == a10.getA8());
1833 assert(dynamic_cast<A8*>(a10.getA6()) == a10.getA8());
1834 assert(dynamic_cast<A8*>(a10.getA7()) == a10.getA8());
1835
1836 assert(dynamic_cast<A9*>(a10.getA1_3()) == 0);
1837 assert(dynamic_cast<A9*>(a10.getA1_4()) == 0);
1838 assert(dynamic_cast<A9*>(a10.getA1_6()) == 0);
1839 assert(dynamic_cast<A9*>(a10.getA2()) == 0);
1840 assert(dynamic_cast<A9*>(a10.getA3()) == 0);
1841 assert(dynamic_cast<A9*>(a10.getA4()) == 0);
1842 assert(dynamic_cast<A9*>(a10.getA5()) == 0);
1843 assert(dynamic_cast<A9*>(a10.getA6()) == 0);
1844 assert(dynamic_cast<A9*>(a10.getA7()) == 0);
1845 assert(dynamic_cast<A9*>(a10.getA8()) == 0);
1846
1847 assert(dynamic_cast<A10*>(a10.getA1_3()) == a10.getA10());
1848 assert(dynamic_cast<A10*>(a10.getA1_4()) == a10.getA10());
1849 assert(dynamic_cast<A10*>(a10.getA1_6()) == a10.getA10());
1850 assert(dynamic_cast<A10*>(a10.getA2()) == a10.getA10());
1851 assert(dynamic_cast<A10*>(a10.getA3()) == a10.getA10());
1852 assert(dynamic_cast<A10*>(a10.getA4()) == a10.getA10());
1853 assert(dynamic_cast<A10*>(a10.getA5()) == a10.getA10());
1854 assert(dynamic_cast<A10*>(a10.getA6()) == a10.getA10());
1855 assert(dynamic_cast<A10*>(a10.getA7()) == a10.getA10());
1856 assert(dynamic_cast<A10*>(a10.getA8()) == a10.getA10());
1857
1858 assert(dynamic_cast<A3*>(a11.getA1_3()) == a11.getA3());
1859 assert(dynamic_cast<A3*>(a11.getA1_4()) == a11.getA3());
1860 assert(dynamic_cast<A3*>(a11.getA1_6()) == a11.getA3());
1861 assert(dynamic_cast<A3*>(a11.getA1_9()) == a11.getA3());
1862 assert(dynamic_cast<A3*>(a11.getA2()) == a11.getA3());
1863
1864 assert(dynamic_cast<A4*>(a11.getA1_3()) == a11.getA4());
1865 assert(dynamic_cast<A4*>(a11.getA1_4()) == a11.getA4());
1866 assert(dynamic_cast<A4*>(a11.getA1_6()) == a11.getA4());
1867 assert(dynamic_cast<A4*>(a11.getA1_9()) == a11.getA4());
1868 assert(dynamic_cast<A4*>(a11.getA2()) == a11.getA4());
1869 assert(dynamic_cast<A4*>(a11.getA3()) == a11.getA4());
1870
1871 assert(dynamic_cast<A5*>(a11.getA1_3()) == a11.getA5());
1872 assert(dynamic_cast<A5*>(a11.getA1_4()) == a11.getA5());
1873 assert(dynamic_cast<A5*>(a11.getA1_6()) == a11.getA5());
1874 assert(dynamic_cast<A5*>(a11.getA1_9()) == a11.getA5());
1875 assert(dynamic_cast<A5*>(a11.getA2()) == a11.getA5());
1876 assert(dynamic_cast<A5*>(a11.getA3()) == a11.getA5());
1877 assert(dynamic_cast<A5*>(a11.getA4()) == a11.getA5());
1878
1879 assert(dynamic_cast<A6*>(a11.getA1_3()) == a11.getA6());
1880 assert(dynamic_cast<A6*>(a11.getA1_4()) == a11.getA6());
1881 assert(dynamic_cast<A6*>(a11.getA1_6()) == a11.getA6());
1882 assert(dynamic_cast<A6*>(a11.getA1_9()) == a11.getA6());
1883 assert(dynamic_cast<A6*>(a11.getA2()) == a11.getA6());
1884 assert(dynamic_cast<A6*>(a11.getA3()) == a11.getA6());
1885 assert(dynamic_cast<A6*>(a11.getA4()) == a11.getA6());
1886 assert(dynamic_cast<A6*>(a11.getA5()) == a11.getA6());
1887
1888 assert(dynamic_cast<A7*>(a11.getA1_3()) == a11.getA7());
1889 assert(dynamic_cast<A7*>(a11.getA1_4()) == a11.getA7());
1890 assert(dynamic_cast<A7*>(a11.getA1_6()) == a11.getA7());
1891 assert(dynamic_cast<A7*>(a11.getA1_9()) == a11.getA7());
1892 assert(dynamic_cast<A7*>(a11.getA2()) == a11.getA7());
1893 assert(dynamic_cast<A7*>(a11.getA3()) == a11.getA7());
1894 assert(dynamic_cast<A7*>(a11.getA4()) == a11.getA7());
1895 assert(dynamic_cast<A7*>(a11.getA5()) == a11.getA7());
1896 assert(dynamic_cast<A7*>(a11.getA6()) == a11.getA7());
1897
1898 assert(dynamic_cast<A8*>(a11.getA1_3()) == a11.getA8());
1899 assert(dynamic_cast<A8*>(a11.getA1_4()) == a11.getA8());
1900 assert(dynamic_cast<A8*>(a11.getA1_6()) == a11.getA8());
1901 assert(dynamic_cast<A8*>(a11.getA1_9()) == a11.getA8());
1902 assert(dynamic_cast<A8*>(a11.getA2()) == a11.getA8());
1903 assert(dynamic_cast<A8*>(a11.getA3()) == a11.getA8());
1904 assert(dynamic_cast<A8*>(a11.getA4()) == a11.getA8());
1905 assert(dynamic_cast<A8*>(a11.getA5()) == a11.getA8());
1906 assert(dynamic_cast<A8*>(a11.getA6()) == a11.getA8());
1907 assert(dynamic_cast<A8*>(a11.getA7()) == a11.getA8());
1908
1909 assert(dynamic_cast<A9*>(a11.getA1_3()) == a11.getA9());
1910 assert(dynamic_cast<A9*>(a11.getA1_4()) == a11.getA9());
1911 assert(dynamic_cast<A9*>(a11.getA1_6()) == a11.getA9());
1912 assert(dynamic_cast<A9*>(a11.getA1_9()) == a11.getA9());
1913 assert(dynamic_cast<A9*>(a11.getA2()) == a11.getA9());
1914 assert(dynamic_cast<A9*>(a11.getA3()) == a11.getA9());
1915 assert(dynamic_cast<A9*>(a11.getA4()) == a11.getA9());
1916 assert(dynamic_cast<A9*>(a11.getA5()) == a11.getA9());
1917 assert(dynamic_cast<A9*>(a11.getA6()) == a11.getA9());
1918 assert(dynamic_cast<A9*>(a11.getA7()) == a11.getA9());
1919 assert(dynamic_cast<A9*>(a11.getA8()) == a11.getA9());
1920
1921 assert(dynamic_cast<A10*>(a11.getA1_3()) == 0);
1922 assert(dynamic_cast<A10*>(a11.getA1_4()) == 0);
1923 assert(dynamic_cast<A10*>(a11.getA1_6()) == 0);
1924 assert(dynamic_cast<A10*>(a11.getA1_9()) == 0);
1925 assert(dynamic_cast<A10*>(a11.getA2()) == 0);
1926 assert(dynamic_cast<A10*>(a11.getA3()) == 0);
1927 assert(dynamic_cast<A10*>(a11.getA4()) == 0);
1928 assert(dynamic_cast<A10*>(a11.getA5()) == 0);
1929 assert(dynamic_cast<A10*>(a11.getA6()) == 0);
1930 assert(dynamic_cast<A10*>(a11.getA7()) == 0);
1931 assert(dynamic_cast<A10*>(a11.getA8()) == 0);
1932 assert(dynamic_cast<A10*>(a11.getA9()) == 0);
1933
1934 assert(dynamic_cast<A11*>(a11.getA1_3()) == a11.getA11());
1935 assert(dynamic_cast<A11*>(a11.getA1_4()) == a11.getA11());
1936 assert(dynamic_cast<A11*>(a11.getA1_6()) == a11.getA11());
1937 assert(dynamic_cast<A11*>(a11.getA1_9()) == a11.getA11());
1938 assert(dynamic_cast<A11*>(a11.getA2()) == a11.getA11());
1939 assert(dynamic_cast<A11*>(a11.getA3()) == a11.getA11());
1940 assert(dynamic_cast<A11*>(a11.getA4()) == a11.getA11());
1941 assert(dynamic_cast<A11*>(a11.getA5()) == a11.getA11());
1942 assert(dynamic_cast<A11*>(a11.getA6()) == a11.getA11());
1943 assert(dynamic_cast<A11*>(a11.getA7()) == a11.getA11());
1944 assert(dynamic_cast<A11*>(a11.getA8()) == a11.getA11());
1945 assert(dynamic_cast<A11*>(a11.getA9()) == a11.getA11());
1946
1947 assert(dynamic_cast<A3*>(a12.getA1_3()) == a12.getA3());
1948 assert(dynamic_cast<A3*>(a12.getA1_4()) == a12.getA3());
1949 assert(dynamic_cast<A3*>(a12.getA1_6()) == a12.getA3());
1950 assert(dynamic_cast<A3*>(a12.getA1_9()) == a12.getA3());
1951 assert(dynamic_cast<A3*>(a12.getA2()) == a12.getA3());
1952
1953 assert(dynamic_cast<A4*>(a12.getA1_3()) == a12.getA4());
1954 assert(dynamic_cast<A4*>(a12.getA1_4()) == a12.getA4());
1955 assert(dynamic_cast<A4*>(a12.getA1_6()) == a12.getA4());
1956 assert(dynamic_cast<A4*>(a12.getA1_9()) == a12.getA4());
1957 assert(dynamic_cast<A4*>(a12.getA2()) == a12.getA4());
1958 assert(dynamic_cast<A4*>(a12.getA3()) == a12.getA4());
1959
1960 assert(dynamic_cast<A5*>(a12.getA1_3()) == a12.getA5());
1961 assert(dynamic_cast<A5*>(a12.getA1_4()) == a12.getA5());
1962 assert(dynamic_cast<A5*>(a12.getA1_6()) == a12.getA5());
1963 assert(dynamic_cast<A5*>(a12.getA1_9()) == a12.getA5());
1964 assert(dynamic_cast<A5*>(a12.getA2()) == a12.getA5());
1965 assert(dynamic_cast<A5*>(a12.getA3()) == a12.getA5());
1966 assert(dynamic_cast<A5*>(a12.getA4()) == a12.getA5());
1967
1968 assert(dynamic_cast<A6*>(a12.getA1_3()) == a12.getA6());
1969 assert(dynamic_cast<A6*>(a12.getA1_4()) == a12.getA6());
1970 assert(dynamic_cast<A6*>(a12.getA1_6()) == a12.getA6());
1971 assert(dynamic_cast<A6*>(a12.getA1_9()) == a12.getA6());
1972 assert(dynamic_cast<A6*>(a12.getA2()) == a12.getA6());
1973 assert(dynamic_cast<A6*>(a12.getA3()) == a12.getA6());
1974 assert(dynamic_cast<A6*>(a12.getA4()) == a12.getA6());
1975 assert(dynamic_cast<A6*>(a12.getA5()) == a12.getA6());
1976
1977 assert(dynamic_cast<A7*>(a12.getA1_3()) == a12.getA7());
1978 assert(dynamic_cast<A7*>(a12.getA1_4()) == a12.getA7());
1979 assert(dynamic_cast<A7*>(a12.getA1_6()) == a12.getA7());
1980 assert(dynamic_cast<A7*>(a12.getA1_9()) == a12.getA7());
1981 assert(dynamic_cast<A7*>(a12.getA2()) == a12.getA7());
1982 assert(dynamic_cast<A7*>(a12.getA3()) == a12.getA7());
1983 assert(dynamic_cast<A7*>(a12.getA4()) == a12.getA7());
1984 assert(dynamic_cast<A7*>(a12.getA5()) == a12.getA7());
1985 assert(dynamic_cast<A7*>(a12.getA6()) == a12.getA7());
1986
1987 assert(dynamic_cast<A8*>(a12.getA1_3()) == a12.getA8());
1988 assert(dynamic_cast<A8*>(a12.getA1_4()) == a12.getA8());
1989 assert(dynamic_cast<A8*>(a12.getA1_6()) == a12.getA8());
1990 assert(dynamic_cast<A8*>(a12.getA1_9()) == a12.getA8());
1991 assert(dynamic_cast<A8*>(a12.getA2()) == a12.getA8());
1992 assert(dynamic_cast<A8*>(a12.getA3()) == a12.getA8());
1993 assert(dynamic_cast<A8*>(a12.getA4()) == a12.getA8());
1994 assert(dynamic_cast<A8*>(a12.getA5()) == a12.getA8());
1995 assert(dynamic_cast<A8*>(a12.getA6()) == a12.getA8());
1996 assert(dynamic_cast<A8*>(a12.getA7()) == a12.getA8());
1997
1998 assert(dynamic_cast<A9*>(a12.getA1_3()) == a12.getA9());
1999 assert(dynamic_cast<A9*>(a12.getA1_4()) == a12.getA9());
2000 assert(dynamic_cast<A9*>(a12.getA1_6()) == a12.getA9());
2001 assert(dynamic_cast<A9*>(a12.getA1_9()) == a12.getA9());
2002 assert(dynamic_cast<A9*>(a12.getA2()) == a12.getA9());
2003 assert(dynamic_cast<A9*>(a12.getA3()) == a12.getA9());
2004 assert(dynamic_cast<A9*>(a12.getA4()) == a12.getA9());
2005 assert(dynamic_cast<A9*>(a12.getA5()) == a12.getA9());
2006 assert(dynamic_cast<A9*>(a12.getA6()) == a12.getA9());
2007 assert(dynamic_cast<A9*>(a12.getA7()) == a12.getA9());
2008 assert(dynamic_cast<A9*>(a12.getA8()) == a12.getA9());
2009
2010 assert(dynamic_cast<A10*>(a12.getA1_3()) == a12.getA10());
2011 assert(dynamic_cast<A10*>(a12.getA1_4()) == a12.getA10());
2012 assert(dynamic_cast<A10*>(a12.getA1_6()) == a12.getA10());
2013 assert(dynamic_cast<A10*>(a12.getA1_9()) == a12.getA10());
2014 assert(dynamic_cast<A10*>(a12.getA2()) == a12.getA10());
2015 assert(dynamic_cast<A10*>(a12.getA3()) == a12.getA10());
2016 assert(dynamic_cast<A10*>(a12.getA4()) == a12.getA10());
2017 assert(dynamic_cast<A10*>(a12.getA5()) == a12.getA10());
2018 assert(dynamic_cast<A10*>(a12.getA6()) == a12.getA10());
2019 assert(dynamic_cast<A10*>(a12.getA7()) == a12.getA10());
2020 assert(dynamic_cast<A10*>(a12.getA8()) == a12.getA10());
2021 assert(dynamic_cast<A10*>(a12.getA9()) == a12.getA10());
2022
2023 assert(dynamic_cast<A11*>(a12.getA1_3()) == a12.getA11());
2024 assert(dynamic_cast<A11*>(a12.getA1_4()) == a12.getA11());
2025 assert(dynamic_cast<A11*>(a12.getA1_6()) == a12.getA11());
2026 assert(dynamic_cast<A11*>(a12.getA1_9()) == a12.getA11());
2027 assert(dynamic_cast<A11*>(a12.getA2()) == a12.getA11());
2028 assert(dynamic_cast<A11*>(a12.getA3()) == a12.getA11());
2029 assert(dynamic_cast<A11*>(a12.getA4()) == a12.getA11());
2030 assert(dynamic_cast<A11*>(a12.getA5()) == a12.getA11());
2031 assert(dynamic_cast<A11*>(a12.getA6()) == a12.getA11());
2032 assert(dynamic_cast<A11*>(a12.getA7()) == a12.getA11());
2033 assert(dynamic_cast<A11*>(a12.getA8()) == a12.getA11());
2034 assert(dynamic_cast<A11*>(a12.getA9()) == a12.getA11());
2035 assert(dynamic_cast<A11*>(a12.getA10()) == a12.getA11());
2036
2037 assert(dynamic_cast<A12*>(a12.getA1_3()) == a12.getA12());
2038 assert(dynamic_cast<A12*>(a12.getA1_4()) == a12.getA12());
2039 assert(dynamic_cast<A12*>(a12.getA1_6()) == a12.getA12());
2040 assert(dynamic_cast<A12*>(a12.getA1_9()) == a12.getA12());
2041 assert(dynamic_cast<A12*>(a12.getA2()) == a12.getA12());
2042 assert(dynamic_cast<A12*>(a12.getA3()) == a12.getA12());
2043 assert(dynamic_cast<A12*>(a12.getA4()) == a12.getA12());
2044 assert(dynamic_cast<A12*>(a12.getA5()) == a12.getA12());
2045 assert(dynamic_cast<A12*>(a12.getA6()) == a12.getA12());
2046 assert(dynamic_cast<A12*>(a12.getA7()) == a12.getA12());
2047 assert(dynamic_cast<A12*>(a12.getA8()) == a12.getA12());
2048 assert(dynamic_cast<A12*>(a12.getA9()) == a12.getA12());
2049 assert(dynamic_cast<A12*>(a12.getA10()) == a12.getA12());
2050 assert(dynamic_cast<A12*>(a12.getA11()) == a12.getA12());
2051
2052 assert(dynamic_cast<A3*>(a13.getA1_3()) == a13.getA3());
2053 assert(dynamic_cast<A3*>(a13.getA1_4()) == a13.getA3());
2054 assert(dynamic_cast<A3*>(a13.getA1_6()) == a13.getA3());
2055 assert(dynamic_cast<A3*>(a13.getA1_9()) == a13.getA3());
2056 assert(dynamic_cast<A3*>(a13.getA2()) == a13.getA3());
2057
2058 assert(dynamic_cast<A4*>(a13.getA1_3()) == a13.getA4());
2059 assert(dynamic_cast<A4*>(a13.getA1_4()) == a13.getA4());
2060 assert(dynamic_cast<A4*>(a13.getA1_6()) == a13.getA4());
2061 assert(dynamic_cast<A4*>(a13.getA1_9()) == a13.getA4());
2062 assert(dynamic_cast<A4*>(a13.getA2()) == a13.getA4());
2063 assert(dynamic_cast<A4*>(a13.getA3()) == a13.getA4());
2064
2065 assert(dynamic_cast<A5*>(a13.getA1_3()) == a13.getA5());
2066 assert(dynamic_cast<A5*>(a13.getA1_4()) == a13.getA5());
2067 assert(dynamic_cast<A5*>(a13.getA1_6()) == a13.getA5());
2068 assert(dynamic_cast<A5*>(a13.getA1_9()) == a13.getA5());
2069 assert(dynamic_cast<A5*>(a13.getA2()) == a13.getA5());
2070 assert(dynamic_cast<A5*>(a13.getA3()) == a13.getA5());
2071 assert(dynamic_cast<A5*>(a13.getA4()) == a13.getA5());
2072
2073 assert(dynamic_cast<A6*>(a13.getA1_3()) == a13.getA6());
2074 assert(dynamic_cast<A6*>(a13.getA1_4()) == a13.getA6());
2075 assert(dynamic_cast<A6*>(a13.getA1_6()) == a13.getA6());
2076 assert(dynamic_cast<A6*>(a13.getA1_9()) == a13.getA6());
2077 assert(dynamic_cast<A6*>(a13.getA2()) == a13.getA6());
2078 assert(dynamic_cast<A6*>(a13.getA3()) == a13.getA6());
2079 assert(dynamic_cast<A6*>(a13.getA4()) == a13.getA6());
2080 assert(dynamic_cast<A6*>(a13.getA5()) == a13.getA6());
2081
2082 assert(dynamic_cast<A7*>(a13.getA1_3()) == a13.getA7());
2083 assert(dynamic_cast<A7*>(a13.getA1_4()) == a13.getA7());
2084 assert(dynamic_cast<A7*>(a13.getA1_6()) == a13.getA7());
2085 assert(dynamic_cast<A7*>(a13.getA1_9()) == a13.getA7());
2086 assert(dynamic_cast<A7*>(a13.getA2()) == a13.getA7());
2087 assert(dynamic_cast<A7*>(a13.getA3()) == a13.getA7());
2088 assert(dynamic_cast<A7*>(a13.getA4()) == a13.getA7());
2089 assert(dynamic_cast<A7*>(a13.getA5()) == a13.getA7());
2090 assert(dynamic_cast<A7*>(a13.getA6()) == a13.getA7());
2091
2092 assert(dynamic_cast<A8*>(a13.getA1_3()) == a13.getA8());
2093 assert(dynamic_cast<A8*>(a13.getA1_4()) == a13.getA8());
2094 assert(dynamic_cast<A8*>(a13.getA1_6()) == a13.getA8());
2095 assert(dynamic_cast<A8*>(a13.getA1_9()) == a13.getA8());
2096 assert(dynamic_cast<A8*>(a13.getA2()) == a13.getA8());
2097 assert(dynamic_cast<A8*>(a13.getA3()) == a13.getA8());
2098 assert(dynamic_cast<A8*>(a13.getA4()) == a13.getA8());
2099 assert(dynamic_cast<A8*>(a13.getA5()) == a13.getA8());
2100 assert(dynamic_cast<A8*>(a13.getA6()) == a13.getA8());
2101 assert(dynamic_cast<A8*>(a13.getA7()) == a13.getA8());
2102
2103 assert(dynamic_cast<A9*>(a13.getA1_3()) == a13.getA9());
2104 assert(dynamic_cast<A9*>(a13.getA1_4()) == a13.getA9());
2105 assert(dynamic_cast<A9*>(a13.getA1_6()) == a13.getA9());
2106 assert(dynamic_cast<A9*>(a13.getA1_9()) == a13.getA9());
2107 assert(dynamic_cast<A9*>(a13.getA2()) == a13.getA9());
2108 assert(dynamic_cast<A9*>(a13.getA3()) == a13.getA9());
2109 assert(dynamic_cast<A9*>(a13.getA4()) == a13.getA9());
2110 assert(dynamic_cast<A9*>(a13.getA5()) == a13.getA9());
2111 assert(dynamic_cast<A9*>(a13.getA6()) == a13.getA9());
2112 assert(dynamic_cast<A9*>(a13.getA7()) == a13.getA9());
2113 assert(dynamic_cast<A9*>(a13.getA8()) == a13.getA9());
2114
2115 assert(dynamic_cast<A10*>(a13.getA1_3()) == a13.getA10());
2116 assert(dynamic_cast<A10*>(a13.getA1_4()) == a13.getA10());
2117 assert(dynamic_cast<A10*>(a13.getA1_6()) == a13.getA10());
2118 assert(dynamic_cast<A10*>(a13.getA1_9()) == a13.getA10());
2119 assert(dynamic_cast<A10*>(a13.getA2()) == a13.getA10());
2120 assert(dynamic_cast<A10*>(a13.getA3()) == a13.getA10());
2121 assert(dynamic_cast<A10*>(a13.getA4()) == a13.getA10());
2122 assert(dynamic_cast<A10*>(a13.getA5()) == a13.getA10());
2123 assert(dynamic_cast<A10*>(a13.getA6()) == a13.getA10());
2124 assert(dynamic_cast<A10*>(a13.getA7()) == a13.getA10());
2125 assert(dynamic_cast<A10*>(a13.getA8()) == a13.getA10());
2126 assert(dynamic_cast<A10*>(a13.getA9()) == a13.getA10());
2127
2128 assert(dynamic_cast<A11*>(a13.getA1_3()) == a13.getA11());
2129 assert(dynamic_cast<A11*>(a13.getA1_4()) == a13.getA11());
2130 assert(dynamic_cast<A11*>(a13.getA1_6()) == a13.getA11());
2131 assert(dynamic_cast<A11*>(a13.getA1_9()) == a13.getA11());
2132 assert(dynamic_cast<A11*>(a13.getA2()) == a13.getA11());
2133 assert(dynamic_cast<A11*>(a13.getA3()) == a13.getA11());
2134 assert(dynamic_cast<A11*>(a13.getA4()) == a13.getA11());
2135 assert(dynamic_cast<A11*>(a13.getA5()) == a13.getA11());
2136 assert(dynamic_cast<A11*>(a13.getA6()) == a13.getA11());
2137 assert(dynamic_cast<A11*>(a13.getA7()) == a13.getA11());
2138 assert(dynamic_cast<A11*>(a13.getA8()) == a13.getA11());
2139 assert(dynamic_cast<A11*>(a13.getA9()) == a13.getA11());
2140 assert(dynamic_cast<A11*>(a13.getA10()) == a13.getA11());
2141
2142 assert(dynamic_cast<A12*>(a13.getA1_3()) == a13.getA12());
2143 assert(dynamic_cast<A12*>(a13.getA1_4()) == a13.getA12());
2144 assert(dynamic_cast<A12*>(a13.getA1_6()) == a13.getA12());
2145 assert(dynamic_cast<A12*>(a13.getA1_9()) == a13.getA12());
2146 assert(dynamic_cast<A12*>(a13.getA2()) == a13.getA12());
2147 assert(dynamic_cast<A12*>(a13.getA3()) == a13.getA12());
2148 assert(dynamic_cast<A12*>(a13.getA4()) == a13.getA12());
2149 assert(dynamic_cast<A12*>(a13.getA5()) == a13.getA12());
2150 assert(dynamic_cast<A12*>(a13.getA6()) == a13.getA12());
2151 assert(dynamic_cast<A12*>(a13.getA7()) == a13.getA12());
2152 assert(dynamic_cast<A12*>(a13.getA8()) == a13.getA12());
2153 assert(dynamic_cast<A12*>(a13.getA9()) == a13.getA12());
2154 assert(dynamic_cast<A12*>(a13.getA10()) == a13.getA12());
2155 assert(dynamic_cast<A12*>(a13.getA11()) == a13.getA12());
2156
2157 assert(dynamic_cast<A13*>(a13.getA1_3()) == a13.getA13());
2158 assert(dynamic_cast<A13*>(a13.getA1_4()) == a13.getA13());
2159 assert(dynamic_cast<A13*>(a13.getA1_6()) == a13.getA13());
2160 assert(dynamic_cast<A13*>(a13.getA1_9()) == a13.getA13());
2161 assert(dynamic_cast<A13*>(a13.getA2()) == a13.getA13());
2162 assert(dynamic_cast<A13*>(a13.getA3()) == a13.getA13());
2163 assert(dynamic_cast<A13*>(a13.getA4()) == a13.getA13());
2164 assert(dynamic_cast<A13*>(a13.getA5()) == a13.getA13());
2165 assert(dynamic_cast<A13*>(a13.getA6()) == a13.getA13());
2166 assert(dynamic_cast<A13*>(a13.getA7()) == a13.getA13());
2167 assert(dynamic_cast<A13*>(a13.getA8()) == a13.getA13());
2168 assert(dynamic_cast<A13*>(a13.getA9()) == a13.getA13());
2169 assert(dynamic_cast<A13*>(a13.getA10()) == a13.getA13());
2170 assert(dynamic_cast<A13*>(a13.getA11()) == a13.getA13());
2171 assert(dynamic_cast<A13*>(a13.getA12()) == a13.getA13());
2172}
2173
2174} // t3
2175
2176int main()
2177{
Eric Fiselier30ad8292014-11-24 22:38:57 +00002178 timer t;
Howard Hinnant13093662012-01-16 00:13:46 +00002179 t1::test();
2180 t2::test();
2181 t3::test();
Howard Hinnant13093662012-01-16 00:13:46 +00002182}