Я пытаюсь сделать что-то подобное, как показано ниже:
std::shared_ptr<asengine::PreCompileConfig> precompileconfigobj = std::make_shared<asengine::PreCompileConfig>();
std::thread rsync_t(&asengine::PreCompile::RunRsyncDb, precompileconfigobj));
Я получаю следующую ошибку:
/usr/include/c++/4.8/functional:1697:61: error: no type named 'type' in 'class std::result_of<std::_Mem_fn<void (asengine::PreCompile::*)(const std::shared_ptr<asengine::PreCompileConfig>&)>(std::reference_wrapper<std::shared_ptr<asengine::PreCompileConfig> >)>'
typedef typename result_of<_Callable(_Args...)>::type result_type;
^
/usr/include/c++/4.8/functional:1727:9: error: no type named 'type' in 'class std::result_of<std::_Mem_fn<void (asengine::PreCompile::*)(const std::shared_ptr<asengine::PreCompileConfig>&)>(std::reference_wrapper<std::shared_ptr<asengine::PreCompileConfig> >)>'
_M_invoke(_Index_tuple<_Indices...>)
После недолгого исследования я мог бы выяснить, что функция потока ожидает ссылкуобъекта аргумента вместо значения.
std::thread rsync_t(&asengine::PreCompile::RunRsyncDb, std::ref(precompileconfigobj));
Но, тем не менее, это не решает проблему. Буду признателен за любую помощь, чтобы выяснить проблему.