У меня есть (API библиотеки, поэтому я не могу изменить прототип функции) функция, которая написана следующим образом:
void FreeContext(Context c);
Теперь, в какой-то момент моеговыполнение У меня есть переменная Context* local_context;
, и это также не подлежит изменению.
Я хочу использовать boost::bind
с функцией FreeContext
, но мне нужно получить Context
из локальной переменной Context*
.
Если я напишу свой код следующим образом, компилятор скажет, что это «недопустимое перенаправление»:следующим образом:
template <typename T> T retranslate_parameter(T* t) {
return *t;
}
boost::bind(::FreeContext,
boost::bind(retranslate_parameter<Context>, _1));
Но это решение не кажется мне действительно хорошим.Любые идеи о том, как решить эту проблему, используя что-то вроде *_1
. Может, написать маленькую лямбда-функцию?