私は最近、ビジュアルスタジオ2017にアップグレードしましたが、標準ライブラリから構文エラーが発生しました。<ratio>と<memory>のエラーがvs2013からvs2017にアップグレードした後
これは出力です。
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は、その場所について、しかし前と、それはそれについて文句はありませんコンパイルした後文句を言うことに気づきました。どういうわけか、コンパイラの設定が変更されたように見えますが、どうすればわかりません。もう1つの質問は、なぜvs2013で動作するのかということです。
これは、クリーンな新しいプロジェクト(つまり、システムヘッダファイルとメインのみ)で発生しますか?もし私があなたのプロジェクトの#defineがシステムヘッダファイルに影響しているのではないかと疑いがあります。 –
@RichardCrittenクリーンなプロジェクトではありません。きれいなプロジェクトは私にとっては今の選択肢ではありません。どのような種類の定義がこの問題を引き起こす可能性があるかを知っていますので、検索を絞り込むことができますか? – VegaBrothers
プリコンパイル済みヘッダーを使用していますか?すべてをきれいにして再建しようとしましたか? –