#include <iostream>
class Foo {
public:
void f() {
struct inner {
void g(Foo& x) {
x.h();
}
};
inner obj;
obj.g(*this);
}
private:
void h() {
std::cout << "Works!" << std::endl;
}
};
int main() {
Foo foo;
foo.f();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgRm9vIHsKcHVibGljOgogICAgdm9pZCBmKCkgewogICAgICAgIHN0cnVjdCBpbm5lciB7CiAgICAgICAgICAgIHZvaWQgZyhGb28mIHgpIHsKICAgICAgICAgICAgICAgIHguaCgpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBpbm5lciBvYmo7CiAgICAgICAgb2JqLmcoKnRoaXMpOwogICAgfQpwcml2YXRlOgogICAgdm9pZCBoKCkgewogICAgICAgIHN0ZDo6Y291dCA8PCAiV29ya3MhIiA8PCBzdGQ6OmVuZGw7CiAgICB9Cn07CgppbnQgbWFpbigpIHsKICAgIEZvbyBmb287CiAgICBmb28uZigpOwp9