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