2017-11-10 8 views
0

私は最近、ビジュアルスタジオ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で動作するのかということです。

+0

これは、クリーンな新しいプロジェクト(つまり、システムヘッダファイルとメインのみ)で発生しますか?もし私があなたのプロジェクトの#defineがシステムヘッダファイルに影響しているのではないかと疑いがあります。 –

+0

@RichardCrittenクリーンなプロジェクトではありません。きれいなプロジェクトは私にとっては今の選択肢ではありません。どのような種類の定義がこの問題を引き起こす可能性があるかを知っていますので、検索を絞り込むことができますか? – VegaBrothers

+0

プリコンパイル済みヘッダーを使用していますか?すべてをきれいにして再建しようとしましたか? –

答えて

0

私は標準が

「>>」あなたは「>>」対について言及した問題に対処するためにC++ 03とC++ 11の間で変化しますが、コンパイラのバージョンを切り替える必要があるかもしれないと思います。

+0

私の 'Platform Toolset'が' Visual Studio 2017(v141) 'に設定されていますか? – VegaBrothers

+0

そうだと思いますが、再インストールするとコンパイラがコードをどのように見ているかを決定する他のフラグがあります。また、それが実際に問題であることを確認する必要があります。なぜスペースを追加してコンパイルを試みることができないのですか? – Carlos

+0

これは読み取り専用ファイルです。私がそれを変更してそれを保存しようとすると、それを保存するように頼み、それが私を助けません。 – VegaBrothers

関連する問題