Возможный дубликат:
Можно ли эмулировать шаблон‹авто X›?
Следующий код C++ работал в vc2010
template<class T, DWORD (T::*memFnPtr)() >
static DWORD WINAPI ThreadProcAdapter( __in LPVOID lpParameter )
{
T* pThis = reinterpret_cast<T*>(lpParameter);
return (pThis->*memFnPtr)();
}
class FooClass
{
public:
DWORD ThreadProcFoo()
{
return 0;
}
};
void fooUse()
{
FooClass foo;
CreateThread(NULL, 0, ThreadProcAdapter<FooClass, &FooClass::ThreadProcFoo>, &foo, 0, NULL);
}
Вопрос: Можем ли мы сделать шаблон ThreadProcAdapter‹> для использования только одного параметра?? Если это так, клиенту будет относительно легко использовать наш адаптер.
template<class T>
static DWORD WINAPI ThreadProcAdapter2( __in LPVOID lpParameter )
{
//typedef
//theClass* pThis = reinterpret_cast<theClass*>(lpParameter);
//return (pThis->*memFnPtr)();
return NULL;
}
void fooUse2()
{
FooClass foo;
CreateThread(NULL, 0, ThreadProcAdapter2<&FooClass::ThreadProcFoo>, &foo, 0, NULL);
}
В частности: если у нас есть указатель на функцию-член
&FooClass::ThreadProcFoo
можем ли мы вычислить тип его класса
FooClass