Использование 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 документация.

Другие вопросы по тегам