RetroPie / EmulationStation

A Fork of Emulation Station for RetroPie. Emulation Station is a flexible emulator front-end supporting keyboardless navigation and custom system themes.
Other
860 stars 343 forks source link

Windows Compilation Problem #265

Open kdt75 opened 7 years ago

kdt75 commented 7 years ago

Getting a build issue when building under windows with GUIGameListOption.cpp.

Detail of error are as follows: 5>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\type_traits(1494): error C2893: Failed to specialize function template 'unknown-type std::invoke(_Callable &&,_Types &&...)' (compiling source file C:\src\EmulationStation-2.6.2\es-app\src\guis\GuiGamelistOptions.cpp) 5> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\type_traits(1494): note: With the following template arguments: (compiling source file C:\src\EmulationStation-2.6.2\es-app\src\guis\GuiGamelistOptions.cpp) 5> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\type_traits(1494): note: '_Callable=_Decayed &' (compiling source file C:\src\EmulationStation-2.6.2\es-app\src\guis\GuiGamelistOptions.cpp) 5> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\type_traits(1494): note: '_Types={}' (compiling source file C:\src\EmulationStation-2.6.2\es-app\src\guis\GuiGamelistOptions.cpp) 5> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\functional(210): note: see reference to function template instantiation 'void std::_Invoke_ret<_Rx,_Callable&>(std::_Forced<_Rx,true>,_Callable &)' being compiled 5> with 5> [ 5> _Rx=void, 5> _Callable=_Decayed 5> ] (compiling source file C:\src\EmulationStation-2.6.2\es-app\src\guis\GuiGamelistOptions.cpp) 5> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\functional(208): note: while compiling class template member function 'void std::_Func_impl<_Decayed,_Alloc,_Ret>::_Do_call(void)' 5> with 5> [ 5> _Alloc=std::allocator, 5> _Ret=void 5> ] (compiling source file C:\src\EmulationStation-2.6.2\es-app\src\guis\GuiGamelistOptions.cpp) 5> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\functional(136): note: see reference to class template instantiation 'std::_Func_impl<_Decayed,_Alloc,_Ret>' being compiled 5> with 5> [ 5> _Alloc=std::allocator, 5> _Ret=void 5> ] (compiling source file C:\src\EmulationStation-2.6.2\es-app\src\guis\GuiGamelistOptions.cpp) 5> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\functional(339): note: see reference to class template instantiation 'std::_Is_large<_Myimpl>' being compiled (compiling source file C:\src\EmulationStation-2.6.2\es-app\src\guis\GuiGamelistOptions.cpp) 5> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\functional(318): note: see reference to function template instantiation 'void std::_Func_class<_Ret>::_Reset_alloc<_Ty,std::allocator<_Ty>>(_Fx &&,const _Alloc &)' being compiled 5> with 5> [ 5> _Ret=void, 5> _Ty=int, 5> _Fx=int, 5> _Alloc=std::allocator 5> ] (compiling source file C:\src\EmulationStation-2.6.2\es-app\src\guis\GuiGamelistOptions.cpp) 5> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\functional(318): note: see reference to function template instantiation 'void std::_Func_class<_Ret>::_Reset_alloc<_Ty,std::allocator<_Ty>>(_Fx &&,const _Alloc &)' being compiled 5> with 5> [ 5> _Ret=void, 5> _Ty=int, 5> _Fx=int, 5> _Alloc=std::allocator 5> ] (compiling source file C:\src\EmulationStation-2.6.2\es-app\src\guis\GuiGamelistOptions.cpp) 5> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\functional(484): note: see reference to function template instantiation 'void std::_Func_class<_Ret>::_Reset(_Fx &&)' being compiled 5> with 5> [ 5> _Ret=void, 5> _Fx=int 5> ] (compiling source file C:\src\EmulationStation-2.6.2\es-app\src\guis\GuiGamelistOptions.cpp) 5> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\functional(484): note: see reference to function template instantiation 'void std::_Func_class<_Ret>::_Reset(_Fx &&)' being compiled 5> with 5> [ 5> _Ret=void, 5> _Fx=int 5> ] (compiling source file C:\src\EmulationStation-2.6.2\es-app\src\guis\GuiGamelistOptions.cpp) 5> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\functional(544): note: see reference to function template instantiation 'std::function<void (void)>::function(_Fx)' being compiled 5> with 5> [ 5> _Fx=int 5> ] (compiling source file C:\src\EmulationStation-2.6.2\es-app\src\guis\GuiGamelistOptions.cpp) 5> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\functional(544): note: see reference to function template instantiation 'std::function<void (void)>::function(_Fx)' being compiled 5> with 5> [ 5> _Fx=int 5> ] (compiling source file C:\src\EmulationStation-2.6.2\es-app\src\guis\GuiGamelistOptions.cpp) 5> C:\src\EmulationStation-2.6.2\es-app\src\guis\GuiGamelistOptions.cpp(165): note: see reference to function template instantiation 'std::function<void (void)> &std::function<void (void)>::operator =(_Fx &&)' being compiled 5> with 5> [ 5> _Fx=int 5> ] 5> C:\src\EmulationStation-2.6.2\es-app\src\guis\GuiGamelistOptions.cpp(165): note: see reference to function template instantiation 'std::function<void (void)> &std::function<void (void)>::operator =(_Fx &&)' being compiled 5> with 5> [ 5> _Fx=int 5> ]

hex007 commented 6 years ago

Probably related to #238

mooware commented 6 years ago

I tried to reproduce this, but it seems to build just fine, at least with VC15.

As far as I can tell, my changes in the linked PR also shouldn't affect this code. And if the source path "EmulationStation-2.6.2" means that this is the git tag v2.6.2, then this PR wouldn't even be in there. The v2.6.2 tag also has an assignment of NULL to a std::function at GuiGamelistOptions.cpp(165), which matches the compile error.

I found it a bit curious that the assigned type in the compile error is "int", but that would match up with the NULL assignment, since NULL is apparently simply defined as "0". I thought maybe VC14 could have an issue with assigning "NULL" or "0" to a std::function, but it seems to compile just fine.