#include <iostream>
using namespace std;
class Strip{
public:
typedef void(Strip::*LOG)(const std::string&);
void log(const string& s)
{
cout << "log() called\n";
}
};
class Observable{
public:
Observable( Strip::LOG l )
{
Strip s;
(s.*l)("string");
}
};
int main() {
Strip::LOG log = &Strip::log;
Observable o( log );
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgU3RyaXB7CnB1YmxpYzoKICAgIHR5cGVkZWYgdm9pZChTdHJpcDo6KkxPRykoY29uc3Qgc3RkOjpzdHJpbmcmKTsKCXZvaWQgbG9nKGNvbnN0IHN0cmluZyYgcykKCXsKCQljb3V0IDw8ICJsb2coKSBjYWxsZWRcbiI7Cgl9ICAgICAKfTsKCmNsYXNzIE9ic2VydmFibGV7CnB1YmxpYzoKICBPYnNlcnZhYmxlKCBTdHJpcDo6TE9HIGwgKQoJewoJCVN0cmlwIHM7CgkJKHMuKmwpKCJzdHJpbmciKTsKCX0KfTsKCmludCBtYWluKCkgewoJCglTdHJpcDo6TE9HIGxvZyA9ICZTdHJpcDo6bG9nOwoJT2JzZXJ2YWJsZSBvKCBsb2cgKTsKCXJldHVybiAwOwp9