// Tests for local types void marker1 (void) { } void marker2 (void) { } int foobar (int x) { class Local { public: int loc1; char loc_foo (char c) { return c + 3; } }; Local l; static Local l1; char c; marker1 (); l.loc1 = 23; c = l.loc_foo('x'); return c + 2; } int main() { int c; c = foobar (31); { // inner block class InnerLocal { public: char ilc; int * ip; int il_foo (unsigned const char & uccr) { return uccr + 333; } class NestedInnerLocal { public: int nil; int nil_foo (int i) { return i * 27; } }; NestedInnerLocal nest1; }; InnerLocal il; il.ilc = 'b'; il.ip = &c; marker2(); } } |