Skip to content

Latest commit

 

History

History
276 lines (221 loc) · 22.2 KB

implementation.md

File metadata and controls

276 lines (221 loc) · 22.2 KB

処理系

本サイトにおける処理系バージョンに記載

本サイトのリファレンスページでは、「処理系」の項目にバージョン番号を記載している。これは、処理系がその機能をサポート開始した厳密なバージョンではなく、リファレンス執筆者が動作確認できたバージョンである。

古くからサポートされている機能だが、古い処理系を入手することが難しい場合などがあるため、本サイトではこのようなルールになっている。

このサイトでは Clang と呼ぶ。「クラン(グ)」と読む。

別名

  • clang
  • clang++
  • Apple LLVMコンパイラ

C++11の機能を有効にする

  • -std=c++11オプションを使用する。

C++14の機能を有効にする

  • Clang 3.2から3.4までは、-std=c++1yオプションを使用する。
    • GNU拡張を有効にする-std=gnu++1yオプションもある。
  • Clang 3.5以降は、-std=c++14オプションを使用する(以前までのオプションも使用できる)。
    • GNU拡張を有効にする-std=gnu++14オプションもある。
  • Clang 6.0以降は、C++14がデフォルトとなる。デフォルトバージョンのコンパイルオプションは-std=gnu++14

C++17の機能を有効にする

  • Clang 3.5から4.0までは、-std=c++1zオプションを使用する。
    • GNU拡張を有効にする-std=gnu++1zオプションもある。
  • Clang 5.0以降は、-std=c++17オプションを使用する(以前までのオプションも使用できる)。
    • GNU拡張を有効にする-std=gnu++17オプションもある。
  • Clang 16.0以降はC++17がデフォルトとなる。デフォルトバージョンのコンパイルオプションは-std=gnu++17

C++20の機能を有効にする

  • Clang 6.0以降は、-std=c++2aオプションを使用する。
    • GNU拡張を有効にする-std=gnu++2aオプションもある。
  • Clang 11.0以降は、-std=c++20オプションを使用する(以前までのオプションも使用できる)。
    • GNU拡張を有効にする-std=gnu++20オプションもある。

C++23の機能を有効にする

  • Clang 12.0以降は、-std=c++2bオプションを使用する。
    • GNU拡張を有効にする-std=gnu++2bオプションもある。
  • Clang 17.0以降は、-std=c++23オプションを使用する(以前までのオプションも使用できる)。
    • GNU拡張を有効にする-std=gnu++23オプションもある。

C++26の機能を有効にする

  • Clang 17.0以降は、-std=c++2cオプションを使用する。
    • GNU拡張を有効にする-std=gnu++2cオプションもある。

このサイトでは GCC と呼ぶ

別名

  • gcc
  • g++

C++11の機能を有効にする

  • GCC 4.3から4.6までは、-std=c++0xオプションを使用する。
    • GNU拡張を有効にする-std=gnu++0xオプションもある。
  • GCC 4.7以降は、-std=c++11オプションを使用する (旧オプションは非推奨)。
    • GNU拡張を有効にする-std=gnu++11オプションもある。

C++14の機能を有効にする

  • GCC 4.8から4.9までは、-std=c++1yオプションを使用する。
    • GNU拡張を有効にする-std=gnu++1yオプションもある。
  • GCC 5.1以降は、-std=c++14オプションを使用する (旧オプションは非推奨)。
    • GNU拡張を有効にする-std=gnu++14オプションもある。
  • GCC 6.1以降は、C++14がデフォルトとなる。デフォルトバージョンのコンパイルオプションは-std=gnu++14

C++17の機能を有効にする

  • GCC 6.1以降は、-std=c++1zオプションを使用する。
    • GNU拡張を有効にする-std=gnu++1zオプションもある。
  • GCC 7.1以降は、-std=c++17オプションを使用する。
    • GNU拡張を有効にする-std=gnu++17オプションもある (旧オプションは非推奨)。
  • GCC 11.1以降は、C++17がデフォルトとなる。デフォルトバージョンのコンパイルオプションは-std=gnu++17

C++20の機能を有効にする

  • GCC 8.1以降は、-std=c++2aオプションを使用する。
    • GNU拡張を有効にする-std=gnu++2aオプションもある。
  • GCC 10.1以降は、-std=c++20オプションを使用する。
    • GNU拡張を有効にする-std=gnu++20オプションもある。

C++23の機能を有効にする

  • GCC 11.1以降は、-std=c++23オプションもしくは仮称バージョンの-std=c++2bオプションを使用する。
    • GNU拡張を有効にする-std=gnu++23および-std=gnu++2bオプションもある。

このサイトでは ICC と呼ぶ。

別名

  • ICC
  • ICL

C++11の機能を有効にする

  • Windowsでは/Qstd:c++11、Linux/macOSでは-std=c++11オプションを使用する。

C++14の機能を有効にする

  • ICC 16.0からは、Windowsでは/Qstd:c++14オプション、Linux/macOSでは-std=c++14オプションを使用する。

C++17の機能を有効にする

  • ICC 17.0からは、Windowsでは/Qstd:c++17オプション、Linux/macOSでは-std=c++17オプションを使用する。

このサイトでは Visual C++ と呼ぶ。Visual Studio 2012 以降、Visual C++は独立した製品名ではなくなり製品Visual Studioのみに含まれるようになったが、当サイトでは製品に含まれているコンポーネント名としてのVisual C++を採用する。

別名

  • VC
  • VC++
  • MSVC
  • cl

以下に当サイトにおけるバージョン表記と、製品・バージョン等の対応を示す。

表記 製品名 [Visual Studio バージョン] †1 VC++ バージョン †2 _MSC_VER _MSC_FULL_VER
2022 Update 12 Visual Studio 2022 version 17.12.3 14.42 1942 194234435
2022 Update 11 Visual Studio 2022 version 17.11.0 14.41 1941 194134120
2022 Update 10 Visual Studio 2022 version 17.10.5 14.40 1939 194033811
2022 Update 9 Visual Studio 2022 version 17.9.2 14.39 1939 193933521
2022 Update 8 Visual Studio 2022 version 17.8.3 14.38 1938 193833133
2022 Update 7 Visual Studio 2022 version 17.7.0 14.37 1937 193732822
2022 Update 6 Visual Studio 2022 version 17.6.2 14.36 1936 193632532
2022 Update 5 Visual Studio 2022 version 17.5.4 ?? 1935 193532217
2022 Update 4 Visual Studio 2022 version 17.4.9 ?? 1934 193431944
2022 Update 3 Visual Studio 2022 version 17.3.6 14.33 1933 193331630
2022 Update 2 Visual Studio 2022 version 17.2.2 14.32 1932 193231329
2022 Visual Studio 2022 version 17.0.2 14.30 1930 193030706
2022 Visual Studio 2022 version 17.0.1 14.30 1930 193030705
2019 Update 11 Visual Studio 2019 バージョン 16.11.2 14.28 1929 192930133
2019 Update 9 Visual Studio 2019 バージョン 16.9.2 14.28 1928 192829913
2019 Update 8 Visual Studio 2019 バージョン 16.8.2 14.28 1928 192829334
2019 Update 8 Visual Studio 2019 バージョン 16.8.1 14.28 1928 192829333
2019 Update 7 Visual Studio 2019 バージョン 16.7 14.27 1927 192729112
2019 Update 6 Visual Studio 2019 バージョン 16.6.2 14.26 1926 192628806
2019 Update 5 Visual Studio 2019 バージョン 16.5.1 14.25 1925 192528611
2019 Update 4 Visual Studio 2019 バージョン 16.4.0 14.24 1924 192428314
2019 Update 3 Visual Studio 2019 バージョン 16.3.2 14.23 1923 192328105
2019 Update 2 Visual Studio 2019 バージョン 16.2.3 14.22 1922 192227905
2019 Update 1 Visual Studio 2019 バージョン 16.1.2 14.21 1921 192127702
2019 Visual Studio 2019 バージョン 16.0.0 14.20 1920 192027508
2017 Update 9 Visual Studio 2017 バージョン 15.9.11 14.16 1916 191627030
2017 Update 9 Visual Studio 2017 バージョン 15.9.7 14.16 1916 191627027
2017 Update 9 Visual Studio 2017 バージョン 15.9.5 14.16 1916 191627026
2017 Update 9 Visual Studio 2017 バージョン 15.9.4 14.16 1916 191627025
2017 Update 9 Visual Studio 2017 バージョン 15.9.1 14.16 1916 191627023
2017 Update 9 Visual Studio 2017 バージョン 15.9.0 14.16 1916
2017 Update 8 Visual Studio 2017 バージョン 15.8.0 14.15 1915
2017 Update 7 Visual Studio 2017 バージョン 15.7.5 14.14 1914 191426433
2017 Update 7 Visual Studio 2017 バージョン 15.7.3 14.14 1914 191426430
2017 Update 7 Visual Studio 2017 バージョン 15.7.2 14.14 1914 191426429
2017 Update 7 Visual Studio 2017 バージョン 15.7.1 14.14 1914 191426428
2017 Update 6 Visual Studio 2017 バージョン 15.6.7 14.13 1913 191326132
2017 Update 6 Visual Studio 2017 バージョン 15.6.6 14.13 1913 191326131
2017 Update 6 Visual Studio 2017 バージョン 15.6.4 14.13 1913 191326129
2017 Update 6 Visual Studio 2017 バージョン 15.6.3 14.13 1913 191326129
2017 Update 6 Visual Studio 2017 バージョン 15.6.2 14.13 1913 191326128
2017 Update 6 Visual Studio 2017 バージョン 15.6.1 14.13 1913 191326128
2017 Update 6 Visual Studio 2017 バージョン 15.6.0 14.13 1913 191326128
2017 Update 5 Visual Studio 2017 バージョン 15.5.7 14.12 1912 191225835
2017 Update 5 Visual Studio 2017 バージョン 15.5.6 14.12 1912 191225835
2017 Update 5 Visual Studio 2017 バージョン 15.5.4 14.12 1912 191225834
2017 Update 5 Visual Studio 2017 バージョン 15.5.3 14.12 1912 191225834
2017 Update 5 Visual Studio 2017 バージョン 15.5.2 14.12 1912 191225831
2017 Update 4 Visual Studio 2017 バージョン 15.4.5 14.11 1911 191125547
2017 Update 4 Visual Studio 2017 バージョン 15.4.4 14.11 1911 191125542
2017 Update 3 Visual Studio 2017 バージョン 15.3.3 14.11 1911 191125507
2017 Update 2 †3 Visual Studio 2017 バージョン 15.2 14.10 1910 191025017
2017 Update 1 †3 Visual Studio 2017 バージョン 15.1 14.10 1910 191025017
2017 Visual Studio 2017 バージョン 15.0 14.10 †4 1910 191025017
2015 Update 3 Visual Studio 2015 Update 3 [14.0] 14.0 1900 190024210
2015 Update 2 Visual Studio 2015 Update 2 [14.0] 14.0 1900 190023918
2015 Update 1 Visual Studio 2015 Update 1 [14.0] 14.0 1900 190023506
2015 Visual Studio 2015 [14.0] 14.0 1900 190023026
2013 Update 5 Visual Studio 2013 Update 5 [12.0] 12.0 1800 180040629
2013 Update 4 Visual Studio 2013 Update 4 [12.0] 12.0 1800 180031101
2013 Update 3 Visual Studio 2013 Update 3 [12.0] 12.0 1800 180030723
2013 Update 2 Visual Studio 2013 Update 2 [12.0] 12.0 1800 180030501
2013 Update 1 †3 Visual Studio 2013 Update 1 [12.0] 12.0 1800 180021005
2013 Visual Studio 2013 [12.0] 12.0 1800 180021005
2012 Update 4 Visual Studio 2012 Update 4 [11.0] 11.0 1700 170061030
2012 Update 3 Visual Studio 2012 Update 3 [11.0] 11.0 1700 170060610
2012 Update 2 Visual Studio 2012 Update 2 [11.0] 11.0 1700 170060315
2012 Update 1 Visual Studio 2012 Update 1 [11.0] 11.0 1700 170051106
2012 Visual Studio 2012 [11.0] 11.0 1700 170050727
2010 SP1 Visual Studio 2010 SP1 [10.0]
Visual C++ 2010 SP1 [10.0]
10.0 1600 160040219
2010 Visual Studio 2010 [10.0]
Visual C++ 2010 [10.0]
10.0 1600 160030319
2008 SP1 Visual Studio 2008 SP1 [9.0]
Visual C++ 2008 SP1 [9.0]
9.0 1500 150030729
2008 Visual Studio 2008 [9.0]
Visual C++ 2008 [9.0]
9.0 1500 150021022
2005 SP1 Visual Studio 2005 SP1 [8.0]
Visual C++ 2005 SP1 [8.0]
8.0 1400 140050727
2005 Visual Studio 2005 [8.0]
Visual C++ 2005 [8.0]
8.0 1400 140050320
Windows Server 2003 SP1 DDK (for AMD64) 1400 140040310
2003 SP1 Visual Studio .NET 2003 SP1 [7.1]
Visual C++ .NET 2003 SP1 [7.1]
7.1 1310 13106030
Windows Server 2003 SP1 DDK 1310 13104035
2003 Visual Studio .NET 2003 [7.1]
Visual C++ .NET 2003 [7.1]
7.1 1310 13103077
Visual Studio Toolkit 2003 [7.1] 7.1 1310 13103052
Windows Server 2003 DDK 1310 13102179
2002 Visual Studio .NET 2002 [7.0]
Visual C++ .NET 2002 [7.0]
7.0 1300 13009466
Windows XP SP1 DDK 1300 13009176
6.0 SP6 Visual Studio 6.0 SP6
Visual C++ 6.0 SP6
6.0 1200 12008804
6.0 SP5 Visual Studio 6.0 SP5
Visual C++ 6.0 SP5
6.0 1200 12008804
Visual Studio 97 [5.0]
Visual C++ 5.0
5.0 1100
Visual C++ 4.2 4.2 1020
Visual C++ 4.1 4.1 1010
Visual C++ 4.0 4.0 1000
Visual C++ 2.0 2.0 900
Visual C++ 1.0 1.0 800
Microsoft C/C++ 7.0 700
Microsoft C 6.0 600
  1. ^ 製品名の列にはVisual C++コンパイラを含む実際に入手する製品の名称を示す。製品のエディション (Express/Standard/Professional/Enterprise/Community 他) は省略する。Visual Studioの製品バージョンは、製品名に現れていないときは [ ~ ] 内に記す。製品バージョンは、2017以降、メインメニューの [ヘルプ]-[Microsoft Visual Studio のバージョン情報] から確認できるものを指す。
  2. ^ VC++バージョンの列にはVisual C++ツールセットのバージョンを記述する。この表では特にVisual C++を入れた時に既定で選択されるツールセットのみについて扱う。Visual Studio 2022においてはC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC配下のフォルダ名(14.39.33519など)で確認できる。
  3. ^ a b c IDEのみ修正され、コンパイラ、ヘッダー、ライブラリ等は変更されなかった。
  4. ^ 2017は2015とバイナリ互換が保たれているためメジャーバージョンアップは行われなかった。その結果、製品バージョンとVisual C++バージョンが一致しなくなった。 Binary Compatibility and Pain-free Upgrade: Why Moving to Visual Studio 2017 is almost “too easy”

C++11の機能を有効にする

  • C++11は常に有効である

C++14の機能を有効にする

  • C++14は常に有効である
  • 2015 Update 3から/std:c++14オプションが導入されたが既定値でありC++14を無効化する機能は提供されていない。_MSVC_LANGマクロの値は201402になる

C++17の機能を有効にする

  • 2015 Update 2以前に実装された機能については、互換性の観点から常に有効である
  • 2015 Update 3以降に実装された機能については、/std:c++17オプションを使用する。_MSVC_LANGマクロの値は201703になる

C++20の機能を有効にする

  • 2019以降に実装された機能については、/std:c++latestオプションを使用する

最新バージョンの言語機能を有効にする