次のように記述された(ライブラリ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
。たぶん小さなラムダ関数を書いていますか?