web-dev-qa-db-fra.com

Pourquoi la norme Visual Studio Community 2017 C ++ standard C ++ 98?

Hier, je suis passé à la dernière version de VS Community 2017 (la précédente avait été installée l'année dernière) et je voulais vérifier le standard C++. Donc, je lance le code suivant qui vérifie, et il se trouve que j'ai C++ 98:

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

Quelles sorties

199711

Pourquoi n'ai-je pas la dernière norme C++?

screenshot of the code, output and vs version

43
eagleye

La valeur de __cplusplus est temporairement intentionnellement non conforme par défaut pour les versions actuelles de Visual Studio afin d'éviter de casser le code existant. Cela ne signifie pas que votre compilateur ne prend en charge aucune fonctionnalité C++ 11 (ou plus récente).

Citant de MSVC rapporte maintenant correctement __cplusplus :

/ Zc: __ cplusplus

Vous devez compiler avec le /Zc:__cplusplus pour afficher la valeur mise à jour du __cplusplus macro. Nous avons essayé de mettre à jour la macro par défaut et nous avons découvert qu’une grande partie du code ne se compilait pas correctement lorsque nous modifions la valeur de __cplusplus. Nous continuerons à exiger l'utilisation de la /Zc:__cplusplus pour toutes les versions mineures de MSVC de la famille 19.xx.

46
user743382