Использование boost::bind с __fastcall
У меня есть функция void __fastcall ClassName::FunctionName()
,
Я хочу создать функцию повышения, указывающую на эту функцию, используя boost::bind. Это возможно? Пишу boost::bind(&ClassName::FunctionName, this)
выдает ошибку компиляции "должна быть вызвана функция-член или взят ее адрес".
Возможный обходной путь - создать функцию-обертку, но это нежелательно, потому что она создает бесполезный дополнительный код:
void ClassName::FunctionName2(){
FunctionName();
}
...
boost::bind(&ClassName::FunctionName2, this);
1 ответ
Решение
Это можно решить, включив поддержку __fastcall
с макросом:
#define BOOST_MEM_FN_ENABLE_FASTCALL
#include <boost/bind.hpp>
После этого синтаксис boost::bind работает как положено.
Это непереносимое расширение, и поэтому не включено по умолчанию. Boost:: bind документация.