【发布时间】:2016-10-06 20:02:36
【问题描述】:
我想编写一个模板函数,它可以获取任何类/结构的对象并在线程中调用其任何成员函数。以下不编译,估计想不通:std::result_of< F(Args...) >::type。
任何建议,帮助..?
class test_f {
public:
int f(int m) {
std::cout << " call f : " << m << std::endl;
return 1;
}
};
template<typename F, typename T, typename... Args>
std::future<typename std::result_of<F(Args...)>::type>
Async(F&& f, T&& t, Args&&... params) {
return(std::async(std::launch::async, std::forward<F>(f),
std::forward<T>(t), std::forward<Args>(params)...));
}
int main() {
test_f tf ;
auto a = Async(&test_f::f, &tf, 1) ;
}
【问题讨论】:
-
如果你可以使用 decltpe 并在函数签名中复制函数体。
-
你没有忘记将 T 传递给 result_of 吗?