考虑一个模板类,如:C++“非类型函数指针”类模板的推演参数
template<typename ReturnType, ReturnType Fn()>
class Proxy
{
void run()
{
ReturnType ret = Fn();
// ... do something ...
}
};
// and a functions
int fn1() { return 5; }
float fn2() { return 5; }
这可以被实例化使用:
Proxy<int, &fn1> p1;
但明确声明返回值的类型似乎不必要。我想实现是一样的东西:
someProxyInstantation<&fn1> p1;
someProxyInstantation<&fn2> p2;
不幸的是,我没有C++预期,这似乎是语言(至少对我来说)一个隐蔽的角落。
如果我能在函数指针其类型获得 - 这样的: 的std :: TR1 ::的result_of < & FN> :: //类型错误1错误C2923:“的std :: TR1: :的result_of”:‘FN1’不是参数的有效模板类型参数‘_Fty’
错误有道理的,因为该参数是不是一个‘类型’的所有
的C++ 0x有decltype( & fn1)但那是几年。
在C++ 03(+ tr1)中这样做的任何方式?
限制: - 我不想通过函子,F1和F2必须保持有返回值全局函数(无法将其迁移至参数))
直到C++ 0x这将不得不这样做。 – 2008-12-16 00:06:59