Я недавно обновился до Visual Studio 2017, и теперь я получаю синтаксическую ошибку из стандартной библиотеки.
Это выход.
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include\ratio(220): error C2947: expecting '>' to terminate template-argument-list, found '<'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include\ratio(221): error C2226: syntax error: unexpected type 'std::integral_constant<_Ty,_Val>::type'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include\ratio(221): error C2988: unrecognizable template declaration/definition
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include\ratio(221): error C2059: syntax error: ','
Вот где это происходит
template<class _R1,
class _R2,
bool _Sfinae>
struct _Ratio_multiply_sfinae<_R1, _R2, _Sfinae, void_t<
typename _Ratio_multiply<_R1, _R2>::_Num::type,
typename _Ratio_multiply<_R1, _R2>::_Den::type>>
{ // typename ratio<>::type is unnecessary here
typedef ratio<
_Ratio_multiply<_R1, _R2>::_Num::value,
_Ratio_multiply<_R1, _R2>::_Den::value> type;
};
Я думаю, что так или иначе думает компилятор >>
это оператор, но я не могу отредактировать его > >
в целях тестирования.
Я не включил <ratio>
но я думаю, что это используется для <chrono>
и поэтому <mutex>
,
Обновить:
Я только что понял, что во время компиляции InteliSense жалуется на это место, но до и после компиляции оно не жалуется на это. Почему-то кажется, что настройки компилятора были изменены, но как я не знаю. Другой вопрос, почему он работал с vs2013.
Я думаю, что стандарт изменился между C ++ 03 и C ++ 11 для решения проблемы, о которой вы упомянули «>>» против «>>»
Возможно, вам придется переключать версии компилятора.
Других решений пока нет …