#include <iostream>
template <class R>
class Convert;
template <class R, class T>
class Convert<R (T)>
{
public:
R operator()(T arg)
{
return static_cast<R>(arg);
}
};
int main()
{
Convert<int(float)> floor;
std::cout << floor(3.14159) << std::endl;
return 0;
}