我有一些(庫API,所以我不能改變的函數原型),這是寫了下面的方法功能:現在C++ - 結合功能
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函數?
你有沒有試過Boost.Lambda? – kennytm 2010-10-14 09:40:22