我有以下代码,效果很好(http://ideone.com/cAS6qQ):
int inc( const int& x) {
return x+1;
}
template< typename R, typename A, R fun( const A&)>
struct From {
void call() {
cout << fun( 1);
};
};
...
From< int, int, inc> f; //I want to change it to more simple From< inc> f;
f.call(); //returns 2
...
我试图简化我的代码,所以我可以像这样构建 From 类的对象:
...
From< inc> f;
f.call( 1); //returns 2
...
我认为它可以以某种方式完成,因为模板参数 R 和 A 是从函数参数和返回类型中得知的。我不能将单个函数作为参数,因为在我的代码中它可以采用任何类型。
PS&GT;我使用的是C ++ 03,所以我没有很酷的功能。