Below is a certain program that is giving compile time errors. This has to do mostly with function Boo in class D. I am eventually trying to use a number of threads to call the solve method but this does not seem to be working out too well for me at the moment to get that far.
The errors are:
1>d:\dummy\project1\trash.cpp(37): warning C4101: 'd': unreferenced local variable 1>c:\program files (x86)\microsoft visual studio\2017\community1\vc\tools\msvc\14.11.25503\include\thr\xthread(240): error C2672: 'std::invoke': no matching overloaded function found 1>c:\program files (x86)\microsoft visual studio\2017\community1\vc\tools\msvc\14.11.25503\include\thr\xthread(248): note: see reference to function template instantiation 'void std::_LaunchPad<_Target>::_Execute<0,1>(std::tuple<void (__thiscall A::* )(C),C> &,std::integer_sequence<_Ty,0,1>)' being compiled 1> with 1> [ 1> _Target=std::unique_ptr<std::tuple<void (__thiscall A::* )(C),C>,std::default_delete<std::tuple<void (__thiscall A::* )(C),C>>>, 1> _Ty=::size_t 1> ] 1>c:\program files (x86)\microsoft visual studio\2017\community1\vc\tools\msvc\14.11.25503\include\thr\xthread(247): note: see reference to function template instantiation 'void std::_LaunchPad<_Target>::_Execute<0,1>(std::tuple<void (__thiscall A::* )(C),C> &,std::integer_sequence<_Ty,0,1>)' being compiled 1> with 1> [ 1> _Target=std::unique_ptr<std::tuple<void (__thiscall A::* )(C),C>,std::default_delete<std::tuple<void (__thiscall A::* )(C),C>>>, 1> _Ty=::size_t 1> ] 1>c:\program files (x86)\microsoft visual studio\2017\community1\vc\tools\msvc\14.11.25503\include\thr\xthread(244): note: while compiling class template member function 'void std::_LaunchPad<_Target>::_Run(std::_LaunchPad<_Target> *) noexcept' 1> with 1> [ 1> _Target=std::unique_ptr<std::tuple<void (__thiscall A::* )(C),C>,std::default_delete<std::tuple<void (__thiscall A::* )(C),C>>> 1> ] 1>c:\program files (x86)\microsoft visual studio\2017\community1\vc\tools\msvc\14.11.25503\include\thr\xthread(232): note: see reference to function template instantiation 'void std::_LaunchPad<_Target>::_Run(std::_LaunchPad<_Target> *) noexcept' being compiled 1> with 1> [ 1> _Target=std::unique_ptr<std::tuple<void (__thiscall A::* )(C),C>,std::default_delete<std::tuple<void (__thiscall A::* )(C),C>>> 1> ] 1>c:\program files (x86)\microsoft visual studio\2017\community1\vc\tools\msvc\14.11.25503\include\thr\xthread(259): note: see reference to class template instantiation 'std::_LaunchPad<_Target>' being compiled 1> with 1> [ 1> _Target=std::unique_ptr<std::tuple<void (__thiscall A::* )(C),C>,std::default_delete<std::tuple<void (__thiscall A::* )(C),C>>> 1> ] 1>c:\program files (x86)\microsoft visual studio\2017\community1\vc\tools\msvc\14.11.25503\include\thread(48): note: see reference to function template instantiation 'void std::_Launch<std::unique_ptr<std::tuple<void (__thiscall A::* )(C),C>,std::default_delete<_Ty>>>(_Thrd_t *,_Target &&)' being compiled 1> with 1> [ 1> _Ty=std::tuple<void (__thiscall A::* )(C),C>, 1> _Target=std::unique_ptr<std::tuple<void (__thiscall A::* )(C),C>,std::default_delete<std::tuple<void (__thiscall A::* )(C),C>>> 1> ] 1>d:\trash\project1\trash.cpp(26): note: see reference to function template instantiation 'std::thread::thread<void(__thiscall A::* )(C),C&,void>(_Fn &&,C &)' being compiled 1> with 1> [ 1> _Fn=void (__thiscall A::* )(C) 1> ] 1>c:\program files (x86)\microsoft visual studio\2017\community1\vc\tools\msvc\14.11.25503\include\thr\xthread(240): error C2893: Failed to specialize function template 'unknown-type std::invoke(_Callable &&,_Types &&...) noexcept(<expr>)' 1>c:\program files (x86)\microsoft visual studio\2017\community1\vc\tools\msvc\14.11.25503\include\thr\xthread(240): note: With the following template arguments: 1>c:\program files (x86)\microsoft visual studio\2017\community1\vc\tools\msvc\14.11.25503\include\thr\xthread(240): note: '_Callable=void (__thiscall A::* )(C)' 1>c:\program files (x86)\microsoft visual studio\2017\community1\vc\tools\msvc\14.11.25503\include\thr\xthread(240): note: '_Types={C}' 1>Done building project "Project1.vcxproj" -- FAILED. ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== The code is:
class C { }; class A { public: virtual void solve(C c) = 0; }; class B:A { public: void solve(C c) {}; }; class D { public: void Boo(B* b, C &c) { auto thread1 = std::thread(&A::solve,c); thread1.join(); } }; int main() { B b; C c; D d; } Thank you for your time! :)
std::thread(&Container::DrawContainer,PBC);?std::thread(&Container::DrawContainer,PBC)auto thread1 = std::thread(&B::solve,b,c);.