C++ 17の機能を使いたい.
Microsoft Visual StudioでC++ 14からC++ 17にコンパイルを切り替える方法を教えてください。
それともVSのリリースバージョンでは利用できませんか?
ドロップダウンが表示され(少なくともVS 2017.3.5以降)、特にC++ 17を選択できます。利用可能なオプションは(プロジェクト>プロパティ> C/C++>言語> C++言語標準)です。
/std:c++14
/std:c++17
/std:c++latest
MSBuild(Visual Studioプロジェクト/ソリューション*。vcproj/*。sln):
プロジェクト設定の追加オプションに追加:最新の機能を有効にするための/std:c++latest
- 現在VS2017、VS2015 Update 3の時点でC++ 17。
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年10月):最新のVS2017の機能はここに文書化されています:
https://docs.Microsoft.com/ja-jp/cpp/build/reference/std-specify-language-standard-version
VS2017はサポートします:/std:[c++14|c++17|c++latest]
今。これらのフラグはプロジェクトのプロパティページで設定できます。
Visual Studio開発環境でこのコンパイラオプションを設定するには
- プロジェクトの[プロパティページ]ダイアログボックスを開きます。詳細については、プロジェクトプロパティの操作を参照してください。
- [構成プロパティ]、[C/C++]、[言語]の順に選択します。
- C++言語標準で、ドロップダウンコントロールからサポートする言語標準を選択し、[OK]または[適用]を選択して変更を保存します。
CMake:
Visual Studio 2017(15.7以降)はCMakeプロジェクトをサポートしています。 CMakeは、さまざまな方法で最新のC++機能を有効にすることを可能にします。最も基本的なオプションは、CMakeLists.txtに ターゲットのプロパティ を設定することで、最新のC++標準を有効にすることです。
add_library (${PROJECT_NAME})
set_property (TARGET ${PROJECT_NAME}
PUBLIC
# 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
)
Visual Studio 2015 Update 3は、探しているC++ 17機能をサポートしていません(emplace_back()
は参照を返します)。
既存のVisual Studio 2015ソリューションをVisual Studio 2017に持ち込み、それをc ++ 17ネイティブコンパイラでビルドする場合は、最初にソリューション/プロジェクトをv141にターゲット変更する必要があります。/C++ - >言語 - >言語標準)