我想制作一个“功能代理”:
目前,我的问题是如何(甚至可能)创建这个(仿函数)类 使用模板teq,并将未知参数列表传递给bind。
提前致谢。
答案 0 :(得分:1)
template<typename R, typename... ARGS>
class Proxy {
typedef std::function<R(ARGS...)> Function;
Function f;
public:
Proxy(Function _f) : f(_f) {}
R operator(ARGS... args) {
std::function<R> bound = std::bind(f, args...);
send_to_worker_thread(bound);
wait_for_worker_thread();
return worker_thread_result();
}
};
// Because we really want type deduction
template<typename R, typename... ARGS>
Proxy<R,ARGS...>* newProxy(R(*x)(ARGS...)) {
return new Proxy(std::function<R,ARGS...>(x);
}
我实际上没有测试过这个。
你可能想要异步的东西,但我会把它留给你。