#include <iostream>
typedef double Func (double);
double add_one (double x)
{
return x+1;
}
template <Func Instance>
struct test_type
{
double operator() (double x)
{
return Instance (x);
}
};
int main ()
{
test_type<add_one> test;
std::cout << test(10.0) << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdHlwZWRlZiBkb3VibGUgRnVuYyAoZG91YmxlKTsKCmRvdWJsZSBhZGRfb25lIChkb3VibGUgeCkKewogICAgcmV0dXJuIHgrMTsKfQogCnRlbXBsYXRlIDxGdW5jIEluc3RhbmNlPgpzdHJ1Y3QgdGVzdF90eXBlCnsKICAgIGRvdWJsZSBvcGVyYXRvcigpIChkb3VibGUgeCkKICAgIHsKICAgICAgICByZXR1cm4gSW5zdGFuY2UgKHgpOwogICAgfQp9OwogCmludCBtYWluICgpCnsKICAgIHRlc3RfdHlwZTxhZGRfb25lPiB0ZXN0OwogICAKICAgIHN0ZDo6Y291dCA8PCB0ZXN0KDEwLjApIDw8ICJcbiI7CiAgIAogICAgcmV0dXJuIDA7Cn0=