Использование boost :: bind с __fastcall

У меня есть функция void __fastcall ClassName::FunctionName(),

Я хочу создать функцию повышения, указывающую на эту функцию, используя boost :: bind. Это возможно? Пишу boost::bind(&ClassName::FunctionName, this) выдает ошибку компиляции «должна быть вызвана функция-член или взят ее адрес».

Возможный обходной путь — создать функцию-обертку, но это нежелательно, потому что она создает бесполезный дополнительный код:

void ClassName::FunctionName2(){
FunctionName();
}
...
boost::bind(&ClassName::FunctionName2, this);

2

Решение

Это можно решить, включив поддержку __fastcall с макросом:

#define BOOST_MEM_FN_ENABLE_FASTCALL
#include <boost/bind.hpp>

После этого синтаксис boost :: bind работает как положено.

Это непереносимое расширение, и поэтому не включено по умолчанию. Boost :: документация по привязке.

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector