我有一些(库API,因此无法更改函数原型)函数,其编写方式如下:
void FreeContext(Context c);
现在,在我执行的某个时刻,我有Context*local_Context
变量,这也是不受更改的主题
我希望使用boost::bind
和FreeContext
函数,但我需要从局部变量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函数