| // PR c++/5607 | |
| // { dg-do run } | |
| class A { | |
| public: | |
| virtual A* getThis() { return this; } | |
| }; | |
| class B { | |
| int a; | |
| public: | |
| virtual B* getThis() { return this; } | |
| }; | |
| class AB : public A, public B { | |
| public: | |
| virtual AB* getThis() { return this; } | |
| }; | |
| int main () | |
| { | |
| AB* ab = new AB(); | |
| A* a = ab; | |
| B* b = ab; | |
| if (a->getThis() != a | |
| || b->getThis() != b) | |
| return 1; | |
| return 0; | |
| } |