#include <iostream>
#include <functional>
int twice(int v)
{
return v*2;
}
int negate(int v)
{
return -v;
}
int g( std::function<int(int)> f)
{
return f(42);
}
int main() {
std::cout << g(twice) << std::endl;
std::cout << g(negate) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KCmludCB0d2ljZShpbnQgdikKewoJcmV0dXJuIHYqMjsJCn0KCmludCBuZWdhdGUoaW50IHYpCnsKCXJldHVybiAtdjsKfQoKaW50IGcoIHN0ZDo6ZnVuY3Rpb248aW50KGludCk+IGYpCnsKCXJldHVybiBmKDQyKTsKfQoKaW50IG1haW4oKSB7CgkKCXN0ZDo6Y291dCA8PCBnKHR3aWNlKSA8PCBzdGQ6OmVuZGw7CglzdGQ6OmNvdXQgPDwgZyhuZWdhdGUpIDw8IHN0ZDo6ZW5kbDsKCQoJcmV0dXJuIDA7Cn0=