Чтобы выбрать функцию-член из набора перегрузки, приведите указатель функции-члена к нужному типу. Таким образом, чтобы выбрать int
версию, используйте это:
static_cast<void (BlueOut::*)(int)>(&BlueOut::RenderOut);
Чтобы выбрать std::string
версию, используйте это:
static_cast<void (BlueOut::*)(std::string)>(&BlueOut::RenderOut);
Используя это в вашем примере, вынапишите это:
// you didn't specify which overload you wanted so I chose `int` because I have no idea
boost::thread* thr = new boost::thread(
boost::bind(
static_cast<void (BlueOut::*)(int)>(&BlueOut::RenderOut),
&blueout
)
);
Тот же принцип работает и для свободных функций и статических функций. С учетом этих функций:
void RenderOut(int);
void RenderOut(std::string);
Вы можете выбрать int
версию с этим:
static_cast<void(*)(int)>(&RenderOut);
... и выбрать std::string
версию с этим:
static_cast<void(*)(std::string)>(&RenderOut);
Подробнее об этом можно прочитать на cppreference .