#include <iostream>

double add_one (double x)
{
	return x+1;
}

template <typename Type, Type Instance>
struct test_type
{
	double operator() (double x)
	{
		return Instance (x);
	}
};

int main ()
{
	test_type<decltype(add_one), add_one> test;
	
	std::cout << test(10.0) << "\n";
	
	return 0;
}