Skip to content

Latest commit

 

History

History
275 lines (220 loc) · 22.1 KB

implementation.md

File metadata and controls

275 lines (220 loc) · 22.1 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 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 Update 1 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オプションを使用する

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