My thread gives me no errors before compilation, but upon compilation, I get this error...
Error code:
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\thread(55,14): error C2672: 'invoke': no matching overloaded function found
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\thread(62): message : see reference to function template instantiation 'unsigned int std::thread::_Invoke<_Tuple,0,1,2,3,4>(void *) noexcept' being compiled
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\thread(66): message : see reference to function template instantiation 'unsigned int (__cdecl *std::thread::_Get_invoke<_Tuple,0,1,2,3,4>(std::integer_sequence<size_t,0,1,2,3,4>) noexcept)(void *) noexcept' being compiled
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\thread(89): message : see reference to function template instantiation 'void std::thread::_Start<_Ty,std::vector<std::string,std::allocator<std::string>>&,std::vector<std::string,std::allocator<std::string>>&,std::vector<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>,std::allocator<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>>>&,std::vector<std::string,std::allocator<std::string>>&>(_Fn &&,std::vector<std::string,std::allocator<std::string>> &,std::vector<std::string,std::allocator<std::string>> &,std::vector<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>,std::allocator<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>>> &,std::vector<std::string,std::allocator<std::string>> &)' being compiled
1> with
1> [
1> _Ty=void (__cdecl MyFrame::* )(std::vector<std::string,std::allocator<std::string>>,std::vector<std::string,std::allocator<std::string>>,std::vector<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>,std::allocator<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>>>,std::vector<std::string,std::allocator<std::string>>),
1> _Fn=void (__cdecl MyFrame::* )(std::vector<std::string,std::allocator<std::string>>,std::vector<std::string,std::allocator<std::string>>,std::vector<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>,std::allocator<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>>>,std::vector<std::string,std::allocator<std::string>>)
1> ]
1>C:\Users\Me\C++\Data-Mange-Bot-C++ver\DataManageApp\main.cpp(2578): message : see reference to function template instantiation 'std::thread::thread<void(__cdecl MyFrame::* )(std::vector<std::string,std::allocator<std::string>>,std::vector<std::string,std::allocator<std::string>>,std::vector<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>,std::allocator<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>>>,std::vector<std::string,std::allocator<std::string>>),std::vector<std::string,std::allocator<std::string>>&,std::vector<std::string,std::allocator<std::string>>&,std::vector<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>,std::allocator<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>>>&,std::vector<std::string,std::allocator<std::string>>&,0>(_Fn &&,std::vector<std::string,std::allocator<std::string>> &,std::vector<std::string,std::allocator<std::string>> &,std::vector<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>,std::allocator<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>>> &,std::vector<std::string,std::allocator<std::string>> &)' being compiled
1> with
1> [
1> _Fn=void (__cdecl MyFrame::* )(std::vector<std::string,std::allocator<std::string>>,std::vector<std::string,std::allocator<std::string>>,std::vector<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>,std::allocator<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>>>,std::vector<std::string,std::allocator<std::string>>)
1> ]
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\thread(51,5): error C2893: Failed to specialize function template 'unknown-type std::invoke(_Callable &&,_Ty1 &&,_Types2 &&...) noexcept(<expr>)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\type_traits(1482): message : see declaration of 'std::invoke'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\thread(51,5): message : With the following template arguments:
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\thread(51,5): message : '_Callable=void (__cdecl MyFrame::* )(std::vector<std::string,std::allocator<std::string>>,std::vector<std::string,std::allocator<std::string>>,std::vector<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>,std::allocator<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>>>,std::vector<std::string,std::allocator<std::string>>)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\thread(51,5): message : '_Ty1=std::vector<std::string,std::allocator<std::string>>'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\thread(51,5): message : '_Types2={std::vector<std::string,std::allocator<std::string>>, std::vector<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>,std::allocator<std::variant<std::string,std::vector<std::string,std::allocator<std::string>>>>>, std::vector<std::string,std::allocator<std::string>>}'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\thread(51,5): error C2780: 'unknown-type std::invoke(_Callable &&) noexcept(<expr>)': expects 1 arguments - 5 provided
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\type_traits(1476): message : see declaration of 'std::invoke'
This is despite following the solution provided in this question. Although the difference here is that I have multiple parameters and I'm starting the thread inside another member function.
I've looked at online resources and haven't turned up anything, if anyone can help that would be great.
Code:
class MyFrame : public wxFrame{
public:
MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
private:
void RightSearchBarTextChange(wxCommandEvent& event);
void RightSearchResultsCreate(std::vector<std::string> CategoryFilterMap, std::vector<std::string> SubCategoryFilterMap, std::vector<std::variant<std::string, std::vector<std::string>>> DateFilterMap, std::vector<std::string> TagFilterMap);
}
void MyFrame::RightSearchBarTextChange(wxCommandEvent& event) {
std::thread thread_object(&MyFrame::RightSearchResultsCreate, RightSearchCategoryFilterSelectedVector, RightSearchSubCategoryFilterSelectedVector, RightSearchDateFilterSelectedVector, RightSearchTagFilterSelectedVector);
thread_object.join();
}
void MyFrame::RightSearchResultsCreate(std::vector<std::string> CategoryFilterMap, std::vector<std::string> SubCategoryFilterMap, std::vector<std::variant<std::string, std::vector<std::string>>> DateFilterMap, std::vector<std::string> TagFilterMap) {
// do stuff here
}