Всем доброго времени суток.
Надоело постоянно писать статические функции-прокси для вызова функций-членов класса в отдельном потоке, захотелось это дело как то автоматизировать. Вот такой код вполне валиден, однако на VC6 не компилится (точнее, не инстанцируется):
template <class T, int (T::*f)()>
struct CProxy
{
static int ThreadProcStub(T *p)
{
return (p->*f)();
}
};
class A
{
public:
int onA()
{
return 1;
};
int onB()
{
return 2;
};
};
int (*f)(A *) = &CProxy<A, &A::onA>::ThreadProcStub; // invalid template argument
На "правильных" компиляторах, конечно, все ОК. Есть ли какой обходной путь добиться такого (т.е. фактически генерации нужной статической функции на основе типа класса и адреса его функции-члена) на VC6?
Спасибо.