#include <functional>
#include <iostream>
template <class T, class U>
T apply(U stuff, std::function<T (U)> function) { return function(stuff); }
int foo(double x) { return x; }
int main ()
{
std::cout << apply(42.0, std::function<int(double)>(foo)) << std::endl;
}
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgpUIGFwcGx5KFUgc3R1ZmYsIHN0ZDo6ZnVuY3Rpb248VCAoVSk+IGZ1bmN0aW9uKSB7IHJldHVybiBmdW5jdGlvbihzdHVmZik7IH0KCmludCBmb28oZG91YmxlIHgpIHsgcmV0dXJuIHg7IH0KCmludCBtYWluICgpCnsKICBzdGQ6OmNvdXQgPDwgYXBwbHkoNDIuMCwgc3RkOjpmdW5jdGlvbjxpbnQoZG91YmxlKT4oZm9vKSkgPDwgc3RkOjplbmRsOwp9Cg==