| class A { |
| public: |
| class B; |
| class C; |
| }; |
| |
| class A::B { |
| int a_b; |
| |
| public: |
| C* get_c(int i); |
| }; |
| |
| class A::C |
| { |
| int a_c; |
| }; |
| |
| class E { |
| public: |
| class F; |
| }; |
| |
| class E::F { |
| public: |
| int e_f; |
| |
| F& operator=(const F &other); |
| }; |
| |
| void refer_to (E::F *f) { |
| // Do nothing. |
| } |
| |
| void refer_to (A::C **ref) { |
| // Do nothing. But, while we're at it, force out debug info for |
| // A::B and E::F. |
| |
| A::B b; |
| E::F f; |
| |
| refer_to (&f); |
| } |
| |
| int main () { |
| A::C* c_var; |
| A::B* b_var; |
| E *e_var; |
| |
| // Keep around a reference so that GCC 3.4 doesn't optimize the variable |
| // away. |
| refer_to (&c_var); |
| } |