| #define CLASS(NAME) \ | |
| class NAME { \ | |
| public: \ | |
| struct Inner; \ | |
| Inner *i = nullptr; \ | |
| }; \ | |
| NAME::Inner &getInner##NAME(); | |
| CLASS(A) | |
| CLASS(B) | |
| CLASS(C) | |
| CLASS(D) | |
| CLASS(E) | |
| CLASS(F) | |
| CLASS(G) | |
| int main() | |
| { | |
| A::Inner &inner_a = getInnerA(); | |
| B::Inner &inner_b = getInnerB(); | |
| C::Inner &inner_c = getInnerC(); | |
| D::Inner &inner_d = getInnerD(); | |
| E::Inner &inner_e = getInnerE(); | |
| F::Inner &inner_f = getInnerF(); | |
| G::Inner &inner_g = getInnerG(); | |
| return 0; // break here | |
| } |