#include <iostream>
#include <functional>
class ClassXY
{
std::function<void()> function;
public:
ClassXY(std::function<void()> f)
: function(f)
{}
void call()
{
function(); // Calls the function
}
};
class Handler
{
public:
void HandleButtonEvent()
{
std::cout << "Handler::HandleButtonEvent\n";
}
};
int main()
{
Handler* handler = new Handler;
ClassXY xy(std::bind(&Handler::HandleButtonEvent, handler));
xy.call();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KCmNsYXNzIENsYXNzWFkKewogICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uOwoKcHVibGljOgogICAgQ2xhc3NYWShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZikKICAgICAgICA6IGZ1bmN0aW9uKGYpCiAgICB7fQoKICAgIHZvaWQgY2FsbCgpCiAgICB7CiAgICAgICAgZnVuY3Rpb24oKTsgIC8vIENhbGxzIHRoZSBmdW5jdGlvbgogICAgfQp9OwoKY2xhc3MgSGFuZGxlcgp7CnB1YmxpYzoKICAgIHZvaWQgSGFuZGxlQnV0dG9uRXZlbnQoKQogICAgewogICAgICAgIHN0ZDo6Y291dCA8PCAiSGFuZGxlcjo6SGFuZGxlQnV0dG9uRXZlbnRcbiI7CiAgICB9Cn07CgppbnQgbWFpbigpCnsKICAgIEhhbmRsZXIqIGhhbmRsZXIgPSBuZXcgSGFuZGxlcjsKCiAgICBDbGFzc1hZIHh5KHN0ZDo6YmluZCgmSGFuZGxlcjo6SGFuZGxlQnV0dG9uRXZlbnQsIGhhbmRsZXIpKTsKCiAgICB4eS5jYWxsKCk7Cn0K