Спасибо, что нашли время, чтобы посмотреть на мою проблему. В настоящее время я делаю порт довольно крупного проекта C ++ (игра Cocos2dx) для Windows. Я получил проект и смог обработать все ошибки, кроме двух оставшихся, которые, похоже, связаны с шаблонами. Показаны следующие ошибки:
Error C2672 'std::invoke': no matching overloaded function found ... C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\type_traits 1434
Error C2893 Failed to specialize function template 'unknown-type std::invoke(_Callable &&,_Types &&...)' ... C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\type_traits 1434
Источник в type_traits вокруг этой строки выглядит так:
template<class _Cv_void,
class... _Valtys> inline
void _Invoke_ret(_Forced<_Cv_void, true>, _Valtys&&... _Vals)
{ // INVOKE, "implicitly" converted to void
_STD invoke(_STD forward<_Valtys>(_Vals)...);
}
Если честно, я довольно новичок в шаблонах и раньше не использовал их сам. Насколько я вижу, эта ошибка говорит мне, что где-то в моем проекте есть шаблон, который используется неправильно. Проблема в том, что их используется тонна, и я понятия не имею, с чего начать. Всего несколько примеров:
... template<typename T>
class Currency { ...
... template<typename AllocatedType, const unsigned int objectPerAllocation>
class BatchAllocator ...
... template<class T>
static T selectRandomItem( ...)
И так далее … Есть ли возможность выяснить, где именно проблема вызвана в исходных файлах? Я использую Visual Studio Enterprise 2015, набор инструментов платформы установлен на Visual Studio 2015 (v140).
Задача ещё не решена.
Других решений пока нет …