#include <functional>
#include <iostream>
#include <string>
struct net
{
void work()
{
std::cout << "net: working...\n";
if(this->onEvent)
this->onEvent("access is allowed");
}
std::function<void(const std::string&)>
onEvent;
};
int main()
{
const auto reaction = [](const auto& answer){
std::cout << "event: " << answer << '\n';
};
net agent;
agent.onEvent = reaction;
agent.work();
}
CiNpbmNsdWRlIDxmdW5jdGlvbmFsPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxzdHJpbmc+CgpzdHJ1Y3QgbmV0CnsKCXZvaWQgd29yaygpIAoJeyAKCQlzdGQ6OmNvdXQgPDwgIm5ldDogd29ya2luZy4uLlxuIjsgCgkJaWYodGhpcy0+b25FdmVudCkKCQkgICAgdGhpcy0+b25FdmVudCgiYWNjZXNzIGlzIGFsbG93ZWQiKTsKCX0KCQoJc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IHN0ZDo6c3RyaW5nJik+IAoJICAgIG9uRXZlbnQ7Cn07CgoKaW50IG1haW4oKSAKewoJY29uc3QgYXV0byByZWFjdGlvbiA9IFtdKGNvbnN0IGF1dG8mIGFuc3dlcil7IAoJCXN0ZDo6Y291dCA8PCAiZXZlbnQ6ICIgPDwgYW5zd2VyIDw8ICdcbic7ICAKCX07CgkKCQoJbmV0IGFnZW50OwoJYWdlbnQub25FdmVudCA9IHJlYWN0aW9uOwoJYWdlbnQud29yaygpOwp9