#include <string>
#include <iostream>
#define PFUNC() do { std::cout << __FUNCTION__ << "\n"; } while (0)
class MyFoo;
class MyBar {
MyFoo* foo;
public:
MyBar(MyFoo* foo) : foo(foo) {
}
void DoStuff();
};
class MyFoo {
public:
void DoStuff() {
PFUNC();
}
};
void MyBar::DoStuff() {
PFUNC();
foo->DoStuff();
}
int main() {
MyFoo foo;
MyBar bar(&foo);
bar.DoStuff();
}
CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCiNkZWZpbmUgUEZVTkMoKSBkbyB7IHN0ZDo6Y291dCA8PCBfX0ZVTkNUSU9OX18gPDwgIlxuIjsgfSB3aGlsZSAoMCkKCmNsYXNzIE15Rm9vOwoKY2xhc3MgTXlCYXIgewogICAgCiAgICBNeUZvbyogZm9vOwoKcHVibGljOgoKICAgIE15QmFyKE15Rm9vKiBmb28pIDogZm9vKGZvbykgewogICAgfQoKICAgIHZvaWQgRG9TdHVmZigpOwp9OwoKY2xhc3MgTXlGb28gewogICAgCnB1YmxpYzoKCiAgICB2b2lkIERvU3R1ZmYoKSB7CiAgICAgICAgUEZVTkMoKTsKICAgIH0KfTsKCnZvaWQgTXlCYXI6OkRvU3R1ZmYoKSB7CiAgICBQRlVOQygpOwogICAgZm9vLT5Eb1N0dWZmKCk7Cn0KCmludCBtYWluKCkgewogICAgTXlGb28gZm9vOwogICAgTXlCYXIgYmFyKCZmb28pOwogICAgCiAgICBiYXIuRG9TdHVmZigpOwp9Cg==