Je veux utiliser les fonctionnalités C++ 17.
Comment passer de la compilation de C++ 14 à C++ 17 dans Microsoft Visual Studio?
Ou ce n'est pas disponible dans les versions de VS?
Il existe maintenant un menu déroulant (du moins depuis VS 2017.3.5) où vous pouvez sélectionner spécifiquement C++ 17. Les options disponibles sont (sous projet> Propriétés> C/C++> Langage> Langage C++)
/std:c++14
/std:c++17
/std:c++latest
MSBuild (projet/solution Visual Studio *. Vcproj/*. Sln ) :
Ajoutez à Options supplémentaires dans les paramètres du projet: /std:c++latest
pour activer les dernières fonctionnalités - actuellement C++ 17 à partir de VS2017, VS2015 Update 3.
https://blogs.msdn.Microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/
/permissive-
désactivera les extensions C++ non standard et activera la conformité standard dans VS2017.
https://blogs.msdn.Microsoft.com/vcblog/2016/11/16/permissive-switch/
EDIT (oct 2018): Les dernières fonctionnalités de VS2017 sont documentées ici:
https://docs.Microsoft.com/en-gb/cpp/build/reference/std-specify-language-standard-version
VS2017 prend en charge: /std:[c++14|c++17|c++latest]
maintenant. Ces indicateurs peuvent être définis via les pages de propriétés du projet:
Pour définir cette option du compilateur dans l'environnement de développement Visual Studio
- Ouvrez la boîte de dialogue Pages de propriétés du projet. Pour plus d'informations, voir Utilisation des propriétés du projet.
- Sélectionnez Propriétés de configuration, C/C++, Langue.
- Dans C++ Language Standard, choisissez la langue standard à prendre en charge à partir du contrôle déroulant, puis choisissez OK ou Appliquer pour enregistrer vos modifications.
CMake :
Visual Studio 2017 (15.7+) prend en charge les projets CMake. CMake permet d'activer les fonctionnalités C++ modernes de différentes manières. L'option la plus élémentaire consiste à activer une norme C++ moderne en définissant propriété d'une cible dans CMakeLists.txt:
add_library (${PROJECT_NAME})
set_property (TARGET ${PROJECT_NAME}
PROPERTY
# Enable C++17 standard compliance
CXX_STANDARD 17
)
Dans le cas d'une bibliothèque d'interface:
add_library (${PROJECT_NAME} INTERFACE)
target_compile_features (${PROJECT_NAME}
INTERFACE
# Enable C++17 standard compliance
cxx_std_17
)
Visual Studio 2015 Update 3 ne prend pas en charge la fonctionnalité C++ 17 que vous recherchez (emplace_back()
renvoyant une référence).
Prise en charge des fonctionnalités C++ 11/14/17 (C++ moderne)
Fonctionnalités C++ 11/14/17 dans VS 2015 RTM
La STL de la VS 2015 Update 2 est une fonctionnalité complète en C++ jusqu’à présent
Si vous importez une solution Visual Studio 2015 existante dans Visual Studio 2017 et que vous souhaitez la construire avec le compilateur natif c ++ 17, vous devez d'abord ré-adresser la solution/les projets à la version v141, ALORS le menu déroulant apparaîtra comme décrit ci-dessus (Propriétés de configuration -> C/C++ -> Langue -> Langage Standard)