Всем привет,
нужно использовать класс std::thread, но в своем классе предложить шаблонную create, чтобы она могла принимать в качестве параметров функцию и параметры, как конструктор std::thread.
Как?
задекларировал функцию:
template<class _Fn,
class... _Args,
class = typename enable_if<!is_same<typename decay<_Fn>::type, std::thread>::value>::type>
void create(_Fn&& _Fx, _Args&&... _Ax)
{
_Launch(&_Thr,
_STD make_unique<tuple<decay_t<_Fn>, decay_t<_Args>...> >(
_STD forward<_Fn>(_Fx), _STD forward<_Args>(_Ax)...));
...
_Launch взял из исходников где описан std::thread, потому что даже не понимаю как там вызвать конструктор std::thread
потом в коде пишу:
m_thread.create(С::doWork, (C*)this);
и получаю ошибку компиляции:
error C2672: 'CThread::create': no matching overloaded function found
error C2783: 'void CThread::create(_Fn &&,_Args &&...)': could not deduce template argument for '<unnamed-symbol>'
Thread.h(22): note: see declaration of 'CThread::create'