我用下面的代碼去檢測給定函數的長參數。檢測功能參數類型
因此,考慮到:
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
所以,我有兩個問題:
一)什麼是錯的上面的代碼?
b)是否有可能以任何其他方式做到這一點?
「函數返回類型」, 「檢測長的說法」。你真的想要什麼? –
是的。要檢測功能參數類型。將修改帖子標題 – Chubsdad
你考慮過boost :: function_traits嗎? – Angew