void globalFunc() { static Monitor1 m1; m1.incident(); m1.print(); static Monitor2 m2(&m1); }
~Monitor2() { assert(pm); pm->decrement(); pm->print(); }
Monitor2(Monitor1* p) { assert(p); pm = p; pm->incident(); pm->print(); }