web-dev-qa-db-ja.com

Visual Studio Community 2017 C ++標準C ++ 98はなぜですか?

昨日、私は最新のVS Community 2017(前のものは昨年インストールされました)にアップグレードし、C++標準を確認したかったのです。そこで、それをチェックする次のコードを実行します。結局のところ、C++ 98があります。

#include<iostream>
using namespace std;
int main()
{
    cout << __cplusplus << endl;
    system("pause");
}

どの出力

199711

最新のC++標準がないのはなぜですか?

screenshot of the code, output and vs version

43
eagleye

__cplusplusの値は、既存のコードの破損を回避するために、Visual Studioの現在のバージョンではデフォルトで一時的に意図的に不適合です。コンパイラがC++ 11(またはそれ以降)の機能をサポートしていないという意味ではありません。

MSVCが__cplusplusを正しく報告するようになりました :からの引用

/ Zc:__ cplusplus

/Zc:__cplusplusマクロの更新された値を表示するには、__cplusplusスイッチを使用してコンパイルする必要があります。デフォルトでマクロを更新しようとしましたが、__cplusplusの値を変更すると、多くのコードが正しくコンパイルされないことがわかりました。 19.xxファミリのMSVCのすべてのマイナーバージョンに対して、/Zc:__cplusplusスイッチの使用を引き続き要求します。

46
user743382