Как включить компиляцию С++ 17 в Visual Studio?

Я хочу использовать возможности С++ 17.

Как переключить компиляцию с С++ 14 на С++ 17 в Microsoft Visual Studio?

Или он не доступен в версиях версий VS?

Ответ 1

Там теперь выпадающий (по крайней мере, начиная с VS 2017.3.5), где вы можете специально выбрать C++ 17. Доступны следующие параметры (в разделе "Проект"> "Свойства"> "C/C++>" Язык "> C++" Стандарт языка ").

  • ISO C++ 14 Стандарт. Параметр командной строки msvc: /std:C++14
  • ISO C++ 17 Стандарт. Параметр командной строки msvc: /std:C++17
  • Последний проект стандарта. опция командной строки msvc: /std:C++latest

Ответ 2

MSBuild (проект/решение Visual Studio *.vcproj/*. Sln):

Добавьте к дополнительным параметрам в настройках проекта: /std:c++latest для включения последних функций - в настоящее время C++ 17 по состоянию на VS2017, обновление VS2015 3.

https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/

/permissive- отключит нестандартные расширения C++ и включит стандартное соответствие в VS2017.

https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/

ОБНОВЛЕНИЕ (октябрь 2018 г.): Последние функции VS2017 описаны здесь:

https://docs.microsoft.com/en-gb/cpp/build/reference/std-specify-language-standard-version

VS2017 поддерживает: /std:[c++14|c++17|c++latest] сейчас. Эти флаги можно установить на страницах свойств проекта:

Чтобы установить этот параметр компилятора в разработке Visual Studio среда

  1. Откройте диалоговое окно "Страницы свойств проекта". Для получения дополнительной информации см. рабочая со свойствами проекта.
  2. Выберите Свойства конфигурации, C/C++, Язык.
  3. В C++ Language Standard выберите языковой стандарт для поддержка из выпадающего списка, затем выберите OK или Применить, чтобы сохранить ваши изменения.

CMake:

Visual Studio 2017 (15. 7+) поддерживает проекты CMake. CMake позволяет активировать современные функции C++ различными способами. Самый простой вариант - включить современный стандарт C++, установив целевое свойство в CMakeLists.txt:

add_library (${PROJECT_NAME})
set_property (TARGET ${PROJECT_NAME}
  PROPERTY
    # Enable C++17 standard compliance
    CXX_STANDARD 17
)

В случае библиотеки интерфейсов:

add_library (${PROJECT_NAME} INTERFACE)
target_compile_features (${PROJECT_NAME}
  INTERFACE
    # Enable C++17 standard compliance
    cxx_std_17
)

Ответ 3

Обновление Visual Studio 2015 Update 3 не поддерживает функцию С++ 17, которую вы ищете (emplace_back() возврат ссылки).

Поддержка для С++ 11/14/17 Особенности (современный С++)

С++ 11/14/17 Особенности В VS 2015 RTM

VS 2015 Update 2s STL - это С++ 17-so-far Feature Complete

Обновление Visual Studio 2015 3

Исправления STL В обновлении VS 2015 3

Ответ 4

Если вы переносите существующее решение Visual Studio 2015 в Visual Studio 2017 и хотите создать его с помощью собственного компилятора C++ 17, сначала необходимо переназначить решение/проекты на v141, ТО затем выпадающий список будет выглядеть, как описано выше (Свойства конфигурации → C/C++ → Язык → Стандарт языка)

Ответ 5

Смотрите эту документацию в MSDN