#include <functional>
#include <iostream>
class Socket
{
public:
template<typename T>
void recv(const T& func) {}
};
class Client
{
public:
void handshake() {}
};
int main()
{
Socket sock;
Client client;
sock.recv([&client](std::string data)
{
client.handshake();
});
}
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCmNsYXNzIFNvY2tldAp7CnB1YmxpYzoKICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgdm9pZCByZWN2KGNvbnN0IFQmIGZ1bmMpIHt9Cn07CgpjbGFzcyBDbGllbnQKewpwdWJsaWM6CiAgIHZvaWQgaGFuZHNoYWtlKCkge30KfTsKCmludCBtYWluKCkKewogICBTb2NrZXQgc29jazsKICAgQ2xpZW50IGNsaWVudDsKICAgc29jay5yZWN2KFsmY2xpZW50XShzdGQ6OnN0cmluZyBkYXRhKQogICB7CiAgICAgIGNsaWVudC5oYW5kc2hha2UoKTsKICAgfSk7Cn0K