我使用以下代码来检测给定函数的长参数。
所以,给定:
int f(int *) { return 0; }
我想提取int *
.
这是我的尝试:
template<class T, class U> struct SingleArg {
typedef U MyArg;
};
template<class T, class U> SingleArg<T, U> fT(T (*p)(U));
int main() {
std::result_of<decltype(fT(f))>::type::MyArg t;
}
然而,这不起作用并且 gcc 4.6 给出了错误
> error: std::result_of<SingleArg<int, int*> >::type has not been
> declared
所以,我有两个问题:
a) 上面的代码有什么问题?
b)是否有可能以任何其他方式/方式做到这一点?