- #include <cstdio> 
- #include <functional> 
-   
-   
- class B {  
- public: 
-     typedef std::function<void (B*)> Function;     
-   
-     void f3() { 
-         puts("okay"); 
-     } 
-     void f1() {    
-         _func(this); 
-     } 
-   
-     Function _func; 
- }; 
-   
- class D : public B  
- { 
- public: 
-     D() 
-     { 
-         _func = (void (B::*)()) &D::f2; // Here is the awfull cast I hate to do 
-     } 
-   
-     void f2() { 
-         f3(); 
-     } 
-   
- }; 
-   
- int main() { 
-     D d; 
-     d.f1(); 
- } 
				I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CgoKY2xhc3MgQiB7IApwdWJsaWM6CiAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQiopPiBGdW5jdGlvbjsgICAgCgogICAgdm9pZCBmMygpIHsKICAgICAgICBwdXRzKCJva2F5Iik7CiAgICB9CiAgICB2b2lkIGYxKCkgeyAgIAogICAgICAgIF9mdW5jKHRoaXMpOwogICAgfQoKICAgIEZ1bmN0aW9uIF9mdW5jOwp9OwoKY2xhc3MgRCA6IHB1YmxpYyBCIAp7CnB1YmxpYzoKICAgIEQoKQogICAgewogICAgICAgIF9mdW5jID0gKHZvaWQgKEI6OiopKCkpICZEOjpmMjsgLy8gSGVyZSBpcyB0aGUgYXdmdWxsIGNhc3QgSSBoYXRlIHRvIGRvCiAgICB9CgogICAgdm9pZCBmMigpIHsKICAgICAgICBmMygpOwogICAgfQoKfTsKCmludCBtYWluKCkgewogICAgRCBkOwogICAgZC5mMSgpOwp9