функция, аналогичная шаблонному конструктору std::thread
От: SVV Беларусь  
Дата: 08.07.16 13:47
Оценка:
Всем привет,

нужно использовать класс 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'
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.