概要
C++ の標準規格の実例として ISO/IEC による国際標準規格 (international standard) がある。 最新の国際標準規格は「ISO/IEC 14882:2020 Programming Languages -- C++」(通称 C++20) である。 C++ の標準規格は、他にも各国の規格化団体によって国際標準規格に等価なものが定められている。 日本では日本工業標準調査会 (JISC) により「JIS X 3014:2003 プログラム言語C++」が定められているが古い (C++03 相当)。 ここでは特に国際標準規格について取り扱う。
国際標準規格の一覧
通称†1 | 名称 | 参照する規格案†2 | 規格案・原案 | __cplusplus |
---|---|---|---|---|
C++26 (C++2c) | ISO/IEC 14882:2026 (予定) | N4993(PDF/HTML) | N4993 N4986 N4981 N4971 N4964 N4958 | -- |
C++23 (C++2b) | ISO/IEC 14882:2024 | N4950(PDF/HTML) | N4950 N4944 N4928 N4917 N4910 N4901 N4892 N4885 N4878 N4868 N4861 |
202302L |
C++20 (C++2a) | ISO/IEC 14882:2020 | N4861†3(PDF/HTML) | N4860 N4849 N4842 N4835 N4830 N4820 N4810 N4800 N4791 N4778 N4762 N4750 N4741 N4727 N4713 N4700 N4687 |
202002L |
C++17 (C++1z) | ISO/IEC 14882:2017 | N4659(PDF/HTML) | N4660 N4659 N4640 N4618 N4606 N4594 N4582 N4567 N4527 N4431 N4296 |
201703L |
C++14 (C++1y) | ISO/IEC 14882:2014 | N4140(PDF/HTML) | N4141 N4140 N3937 N3936 N3797 N3691 N3690 N3485 N3376 N3337 |
201402L |
C++11 (C++0x) | ISO/IEC 14882:2011 | N3337†5(PDF/HTML) | N3291 N3290 N3242 N3225 N3126 N3090 N3035 N3000 N2960 N2914 N2857 N2798 N2723 N2691 N2606 N2588 N2521 N2461 N2369 N2315 N2284 N2134 N2009 N1905 N1804 N1733 N1655 |
201103L |
C++03 | ISO/IEC 14882:2003 | N1577 | N1577 ? | 199711L (C++98 と同じ) |
C++98 | ISO/IEC 14882:1998 | ? | ? | 199711L |
- ^ カッコ内は策定時・標準化前に一時的に用いられた通称
- ^ 最終国際規格案はPDFやHTMLなどの形で一般公開されていないため、それにほぼ同一の内容の規格案を参照する。
- ^ N4861 は、C++20 DISであるN4860に対するデザインレベルの差とC++17との相互参照がない以外の差はないため、事実上 N4861 が C++20 を参照する時に用いられる。
- ^ N4788 は政治的事情により撤回された (参照 N4792)
- ^ N3337 は、C++11規格に対する編集レベルの修正のみが適用された仕様案であるため、事実上 N3337 が C++11 を参照する時に用いられる。C++11規格からN3337への変更点は、N3338を参照。
(それより前の公開されているC++11向け仕様案であるN3242からC++11規格に対しては、機能的な変更がいくつかあるため、C++11規格として参照するには適さない)
最新のDraftのHTML版は以下で公開されている。
Draft C++ Standard: Contents
標準規格の文章はtexで書かれており、そのソースコードは以下で2011年8月16日以降のものについて(つまりN3291より後、N3337より前)公開されている。
cplusplus/draft: C++ standards drafts
用語: 国際標準規格を定める組織
- C++標準化委員会 (C++ Standards Committee): C++ の国際標準規格を策定する団体。 組織としての位置づけはISO/IEC JTC1/SC22/WG21になる。 国際標準化機構 (ISO; international organization for standardization) および国際電気標準会議 (IEC; International Electronics Commission) はそれぞれ様々な規格の標準化団体である。 第一合同技術委員会 (JTC1; Joint Technical Committee 1) は ISO/IEC の下で情報技術の標準化を行う団体である。 下部組織の SC22 はプログラム言語の標準化を行う副委員会 (SC; subcommittee) である。 C++標準化委員会は WG21 という作業グループ (WG; working group) である。
- CWG (Core working group): C++標準化委員会の内、コア言語機能の策定を行う作業グループ
- LWG (Library working group): C++標準化委員会の内、標準ライブラリ機能の策定を行う作業グループ
- NB (national body) またはMB/NC (member body/national committee): C++標準化委員会の正会員つまり各国から派遣される団体のこと。本来は member body は ISO での名称で、national committee は IEC での名称。
用語: 国際標準規格の文書
- 提案文書 (proposal paper): 標準規格の変更についての提案文書
- 問題 (issue): C++標準規格の問題や課題のこと
- 欠陥 (defect): C++標準規格に含まれるいわば "バグ" のこと
- DR (defect report, defect resolution): 委員会で承認された欠陥の報告または欠陥の修正のこと
- NAD (not a defect): 委員会により標準規格の欠陥ではないとされた問題のこと
- DRWP: 最新の規格原案に取り込み済みの DR のこと
- WD (working draft): 作業原案
- CD (committee draft): 委員会原案
- FCD (final committee draft): 最終委員会原案
- DIS (draft international standard): 国際規格案
- FDIS (final draft international standard): 最終国際規格案
- IS (international standard): 国際規格
- TR (technical report): 技術報告書。用例: TR1
- TS (technical specifications): 技術仕様書。用例: Concepts TS
参照
- 標準規格
- ISO/IEC 14882:2024 - Programming languages — C++
- ISO/IEC 14882:2020 - Programming languages — C++
- ISO/IEC 14882:2017 - Programming languages -- C++
- ISO/IEC 14882:2014 - Information technology -- Programming languages -- C++
- ISO/IEC 14882:2011 - Information technology -- Programming languages -- C++
- ISO/IEC 14882:2003 - Programming languages -- C++
- ISO/IEC 14882:1998 - Programming languages -- C++
- JIS X 3014:2003 プログラム言語C++/Information Technology -- Programming languages -- C++ 日本規格協会 JSA Webdesk
- Experimental C++ Features - cppreference.com
- c++ - Which draft is closest to the C++14 standard? - Stack Overflow
- Where do I find the current C or C++ standard documents? - Stack Overflow
- c++ - How are the __cplusplus directive defined in various compilers? - Stack Overflow
- ISO/IEC JTC1/SC22/WG21 - The C++ Standards Committee - ISOCPP
- 国際標準化機構 - Wikipedia
- 国際電気標準会議 - Wikipedia
- ISO/IEC JTC 1 - Wikipedia
- ISO/IEC JTC 1/SC 22 - Wikipedia