Есть некоторый код:
template <class SomeData>
void clients_connect (SOCKET sock, sockaddr_in client_addr, SomeData dati)
{
... // ... - какой-то ненужный код
}
template <class SomeData>
void SomeClass::some_method (boost::function<bool (SOCKET,sockaddr_in,MData)> f,int qri, SomeData dati)
{
...
main_thread=boost::thread ( boost::bind( &SomeClass::other_method, this, f, dati ) );
...
}
template <class SomeData>
void SomeClass::other_method (boost::function<bool (SOCKET,sockaddr_in,MData)> f, SomeData dati)
{
...
f(param1,param2,dati);
...
}
int main()
{
....
SomeClass cl;
Data dt; //структура где хранится информация
cl.some_method(clients_connect,100,dt); //тут ошибка
...
}
error: no matching function for call to 'SomeClass::some_method (<unresolved overloaded function type>, int, Data&)'
Почему то компилятор видит эту функцию как <unresolved overloaded function type>, наверно из-за template. Как можно сказать компилятору, что это SomeClass::some_method (boost::function<bool(unsigned int, sockaddr_in, SomeData)>, int, SomeData) [with SomeData = Data]|. Метод с заменой template на void* не предлагать.