我有一些(库 API,所以我不能更改函数原型)函数,它是按以下方式编写的:
void FreeContext(Context c);
现在,在我执行的某个时刻,我有Context* local_context;
变量,这也不是一个可以改变的主题。
我希望使用boost::bind
withFreeContext
函数,但我需要Context
从局部变量中检索Context*
。
如果我按以下方式编写代码,编译器会说它是“非法间接”:
boost::bind(::FreeContext, *_1);
我设法通过以下方式解决了这个问题:
template <typename T> T retranslate_parameter(T* t) {
return *t;
}
boost::bind(::FreeContext,
boost::bind(retranslate_parameter<Context>, _1));
但是这个解决方案对我来说似乎并不是很好。关于如何使用类似*_1
. 也许写一个小的 lambda 函数?