歴史 C++の生みの親であるビャルネ・ストロヴストルップ 氏、AT&Tのニュージャージーオフィスにて、2000 年頃 1979年、デンマークのコンピュータ科学者である ビャルネ・ストロヴストルップ は、 C++の前身である「C with Classes 」の開発に着手した。 [ 23 ] 当初、ストロヴストルップの「C with Classes」は、CコンパイラであるCpreに、クラス 、派生クラス 、厳密な型付け 、インライン化 、デフォルト引数 などの機能を追加した。[ 24 ]
2015年にパリで実施されたC++11の機能に関するクイズ 1982年、ストロストルップは、従来のコンパイラ技術を用いて、クラスを備えたC言語の改良版および拡張版の設計を開始しました。[ 25 ] この言語は、C++という名前が採用される前に一時的にC84と呼ばれていました。この名前はリック・マスキッティによって提案され、C言語の++ インクリメント演算子 に由来しています。[ 25 ] [ 26 ] 結果として生まれた言語には、仮想関数 、関数と演算子のオーバーロード 、参照 、const 改良された型チェック 、ユーザー制御のフリーストアメモリ割り当て(new / delete )、およびBCPLスタイルの単一行// コメントが含まれていました。[ 25 ] ストロストルップはまた、 1982年の春から1983年の夏にかけて、C++コンパイラのフロントエンドである Cfrontを 設計および実装しました。 [ 25 ]
1985年に『The C++ Programming Language』 の初版がリリースされ、公式の標準がまだ存在しなかったため、この言語の決定版リファレンスとなった。[ 27 ] 同年10月には、C++の最初の商用実装がリリースされた。[ 23 ]
1989年にC++ 2.0がリリースされ、 1991年にはC++プログラミング言語 の改訂第2版が出版されました。[ 28 ] 2.0の新機能には、多重継承、抽象クラス、静的メンバ関数、constメンバ関数 、保護メンバが含まれていました。1990年には、注釈付きC++リファレンスマニュアルが出版されました。このマニュアルは、将来の標準の基礎となりました。その後、 テンプレート 、例外 、名前空間 、新しいキャスト 、ブール型 などの機能が追加されました。
1998年にC++98がリリースされ、言語が標準化され、2003年にはマイナーアップデート(C++03 )がリリースされた。
C++98 以降、C++ は比較的ゆっくりと進化し、2011 年にC++11 標準がリリースされ、多数の新機能が追加され、標準ライブラリがさらに拡張され、C++ プログラマにより多くの機能が提供されました。2014 年 12 月にマイナーアップデートのC++14 がリリースされた後、 C++17 でさまざまな新機能が導入されました。[ 29 ] 2020 年 2 月に最終決定された後、[ 30 ] C++20 標準のドラフトが 2020 年 9 月 4 日に承認され、2020 年 12 月 15 日に正式に公開されました。[ 31 ] [ 32 ]
2018年1月3日、ストロストルップは「C++プログラミング言語の構想と開発」により、 2018年のチャールズ・スターク・ドレイパー工学賞の受賞者として発表された。 [ 33 ]
2022年12月、C++はTIOBEインデックス で3位にランクインし、インデックス史上初めてJavaを上回った。 2024年 11月現在 この言語はPython に次いで2位にランクインし、Javaは3位となっている。[ 34 ]
2025年3月、ストロストルップは言語コミュニティに対し、この言語を守るよう呼びかけた。この言語は手動メモリ管理を可能にするため、プログラマーが意図せず誤用すると、バッファオーバーフロー などのセキュリティリスクとなるバグがプログラムに導入される可能性がある。[ 35 ]
哲学 C++の歴史を通じて、その開発と進化は一連の原則によって導かれてきました。[ 38 ]
それは実際の問題に基づいて開発されるべきであり、その機能は実際のプログラムにおいてすぐに役立つものでなければならない。 すべての機能は実装可能であるべきであり、(実装するための合理的で分かりやすい方法を備えているべきである。) プログラマーは自由に自分のプログラミングスタイルを選択できるべきであり、そのスタイルはC++によって完全にサポートされるべきである。 有用な機能を許可することは、C++のあらゆる悪用を防ぐことよりも重要である。 プログラムを個別の明確な部分に編成するための機能と、個別に開発された部分を組み合わせるための機能を提供するべきである。 型システム の暗黙的な違反は認められない(ただし、明示的な違反、つまりプログラマーが明示的に要求した違反は許容される)。ユーザー作成型は、組み込み型と同等のサポートとパフォーマンスを備えている必要がある。 未使用の機能は、作成された実行ファイルに悪影響を与えてはなりません(例えば、パフォーマンスの低下など)。 C++より下位の言語は存在すべきではない(アセンブリ言語 を除く)。 C++は、独自の、互換性のないプログラミング環境を構築するのではなく、既存の他の プログラミング言語 と連携して動作するべきである。 プログラマーの意図が不明な場合は、手動制御を提供することで、プログラマーが意図を指定できるようにする。
標準化 C++は、JTC1/SC22/WG21として知られるISO ワーキンググループによって標準化されています。ワーキンググループは毎年3週間の会議を開催しています。[ 45 ] これまでにC++標準の7つの改訂版を公開しており、現在は次の改訂版であるC++26 に取り組んでいます。
1996年にストックホルムで開催されたC++標準化委員会の会議中の様子 1998年、ISOワーキンググループはC++を初めて標準化し、ISO/IEC 14882:1998 (通称C++98) としました。2003年には、C++98で指摘された問題を修正したC++標準の新バージョン、ISO/IEC 14882:2003 を発表しました。
次の主要な標準改訂は非公式に「C++0x」と呼ばれていましたが、2011年までリリースされませんでした。 [ 46 ] C++11 (14882:2011) には、コア言語と標準ライブラリの両方への多くの追加が含まれていました。[ 41 ]
2014年に、C++14 (C++1yとも呼ばれる)がC++11の小規模な拡張としてリリースされ、主にバグ修正と小規模な改善が行われた。[ 47 ] 国際標準草案の投票手続きは2014年8月中旬に完了した。[ 48 ]
C++14 の後、 C++17 というメジャー改訂版(非公式には C++1z として知られている) が、2017 年 7 月中旬に ISO C++ 委員会によって完成し、2017 年 12 月に承認および公開されました。[ 49 ]
ISOは標準化プロセスの一環として、技術報告書や仕様書 も発行しています。
より詳細な技術仕様は現在開発中で、承認待ちです。
標準ライブラリ C++98として承認された草案である「ワーキングペーパー」規格。その半分はC++標準ライブラリに充てられていた。 C++ 標準は、コア言語と標準ライブラリの 両方を規定しています。ライブラリ条項は、ライブラリの内容、整形式の C++ プログラムがライブラリを使用する方法、および準拠する実装に課される要件を記述しています。[ 72 ]
標準ライブラリは、言語サポート、診断、メモリ管理 、メタプログラミング 、汎用ユーティリティ、コンテナ 、イテレータ 、範囲 、アルゴリズム 、文字列 、テキスト処理 、数値 、時間、入出力、並行処理 サポートなどの領域に整理されています。[ 72 ] また、C++ヘッダー などを介してC 標準ライブラリ の機能も提供します。C でマクロ として定義されている名前を除き、これらの宣言は名前空間 に配置されます。<cstdio><cstdlib>std
ライブラリ機能は従来、標準ヘッダーを含めることによって利用可能になっていました。たとえば、。 C++20 以降、インポート可能な標準ライブラリヘッダーはヘッダーユニットとしてインポートすることもできます。 C++23 では、名前付き標準ライブラリモジュールとが追加されました。は名前空間 の宣言をエクスポートし、 はC ライブラリ機能に対応するグローバル名前空間の宣言もエクスポートします。[ 74 ] #include <vector> std std.compatstdstdstd.compat
標準ライブラリに大きな影響を与えたのは、 1994 年に Alexander Stepanov と Meng Lee によって C++ 標準化委員会に提案された汎用プログラミングライブラリであるStandard Template Library (STL) です。コンテナ、イテレータ、汎用アルゴリズムのモデルは標準 C++ ライブラリの一部となりましたが、標準ライブラリには入出力、ローカリゼーション、診断、C ライブラリのサブセットなど、他にも多くの機能が含まれています。[ 75 ] [ 76 ]
C++コアガイドラインC++ コア ガイドライン[ 77 ] は、C++ ISO ワーキング グループの招集者および議長である Stroustrup と Herb Sutter が主導するイニシアチブであり、プログラマが言語標準 C++11 以降でベスト プラクティスを使用して「モダン C++」を記述できるように支援し、コンパイラおよび静的チェック ツールの開発者が不適切なプログラミング プラクティスを検出するためのルールを作成できるように支援します。主な目的は、型およびリソースが安全な C++ を効率的かつ一貫して記述することです。しかしながら、このガイドラインは ISO C++ 標準委員会によって承認されておらず、委員会の合意を表すものでもありません。[ 78 ]
コアガイドラインは、CPPCon 2015のオープニング基調講演で発表されました[ 79 ] 。
ガイドラインには、コアガイドラインを実装するための型と関数のヘッダーのみのライブラリであるガイドラインサポートライブラリ (GSL) と、ガイドラインのルールを強制するための静的チェッカーツールが付属しています。[ 80 ] この実装の最大のものの 1 つは、Microsoft の実装です。[ 81 ] std::byte GSL の既存の機能の多くは、スマートポインタやなど、後に言語に統合されましたstd::span。[ 81 ]
互換性 コンパイラベンダーにより大きな自由を与えるため、C++ 標準化委員会は、名前マングリング 、例外処理 、その他の実装固有の機能の実装を規定しないことを決定しました。この決定の欠点は、異なるコンパイラによって生成された オブジェクトコードが互換性がないことが予想されることです。ただし、特定のマシンや オペレーティングシステム 向けにコンパイラを標準化しようとする試みもあります。たとえば、Itanium C++ ABI は(その名前にもかかわらず)プロセッサ非依存であり、GCC と Clang によって実装されています。[ 82 ]
C と共に C++ はC の上位互換とみなされることが多いが、厳密にはそうではない。[ 83 ] ほとんどの C コードは C++ で正しくコンパイルできるが、いくつかの違いにより、有効な C コードが C++ では無効になったり、動作が異なったりすることがある。たとえば、C では から他のポインタ型への暗黙的な変換が可能であるが、C++ では(型の安全性の理由から)不可能である。また、C++ では、 C プログラムで識別子(たとえば変数名)として使用できるや などの多くの新しいキーワードが定義されている。void * new class
1999 年の C 標準の改訂 ( C99 ) により、いくつかの非互換性が解消され、行コメント ( // ) や宣言とコードの混在など、C++ の機能をサポートするようになりました。一方、C99 では、可変長配列 、ネイティブ複素数型 (ただし、 C++ 標準ライブラリのクラスはコード互換性はないものの同様の機能を提供します)、指定初期化子、複合リテラル 、キーワードなど、C++ ではサポートされておらず、 C++ では非互換性または冗長な新機能が多数導入されました。[ 84 ] C99 で導入された機能の一部は、C++ 標準の次のバージョンであるC++11 に含まれました(冗長でないもの)。[ 85 ] [ 86 ] [ 87 ] しかし、C++11 標準では、文字列リテラルを文字ポインタに代入することを許可しないなど、新しい非互換性が導入されています。これは、C では有効なコードです。std :: complex restrict
C言語とC++言語のコードを混在させるには、C言語とC++言語の両方から呼び出される、または両方で使用される関数宣言または定義は、ブロック内に配置することでCリンケージで宣言する必要があります。このような関数は、名前修飾 (つまり、関数オーバーロード)に依存する機能を使用することはできません。extern "C" { /*...*/ }
インラインアセンブリ C または C++ で開発されたプログラムは、パフォーマンスの最適化が不可欠な場合、高水準プログラミング言語と比較して、低水準機能、高速性、および強化された制御を活用するために、インラインアセンブリをよく利用します[ 88 ] [ 89 ] 。C++ はasm 宣言を使用してアセンブリ 言語を埋め込むサポートを提供していますが[ 90 ] 、インラインアセンブリ の互換性はコンパイラと アーキテクチャ によって大きく異なります。PythonやJava などの高水準言語の機能とは異なり、アセンブリコードは基盤となるプロセッサとコンパイラの実装に大きく依存します。
コンパイラ間の差異 C++コンパイラによって、インラインアセンブリの実装方法は異なります。
GCC ( GNU Compiler Collection ) とClang : [ 91 ] どちらのコンパイラも、GCC 拡張インラインアセンブリ構文を使用し、およびオプションでコンパイルできるコードを記述する際に、__asm__ キーワードの代わりにを使用します。これにより、入力/出力オペランドと上書きレジスタを指定できます。このアプローチは、Intel [ 92 ] や IBM [ 93 ] のコンパイラなど、他の場所でも採用されています。asm - ansi - std MSVC ( Microsoft Visual C++ ): インラインアセンブラはコンパイラに組み込まれています。以前は__asm キーワードによるインラインアセンブリがサポートされていましたが、64 ビットモードではこのサポートが削除され、代わりに別の .asm モジュールが必要になりました。[ 94 ] TI ARM Clangと組み込みコンパイラ:[ 95 ] テキサス・インスツルメンツのTI Arm Clangのような組み込みシステムコンパイラの中には、インラインアセンブリを許可するものの、レジスタ規約や呼び出し規約との競合を避けるために、より厳格なルールを課すものがあります。
C++とアセンブリ言語間の相互運用性C++ は、アセンブリ コードを統合するための 2 つの主要な方法を提供します。1 つはスタンドアロン アセンブリ ファイルで、アセンブリ コードは別々に記述され、C++ コードとリンクされます。[ 96 ] 2 つはインライン アセンブリ で、アセンブリ コードはコンパイラ固有の拡張機能を使用して C++ コード内に埋め込まれます。
注記 ↑ クラス付きC言語 を参照 ↑ C++20のスタックレスコルーチンのアイデアについて。 ↑ 発音はSEE PLUSS PLUSS で 、 CPP またはCXX と略されることもあります。 ↑ このコードは、Bjarne Stroustrup 氏の正誤表 (p. 633) から引用したものです。同氏は、ではなくの 使用について説明しています。また、内の暗黙的な戻り値の説明については、「Can I write "void main()"?」を参照してください(2020 年 7 月 2 日アーカイブ) 。この暗黙的な戻り値は、他の関数では使用できません。 '\n'std::endlreturn 0;main
参考文献 ↑ Wyatt Childers 他 (2024 年 6 月 26 日). "P2996R4 - C++26 のリフレクション" . isocpp.org . WG21. ↑ 「N5032: 作業草案、プログラミング言語 — C++」 (PDF) 。ISO /IEC JTC 1/SC 22。 2025年12月15日。 2026年 4月29日 取得 。 ↑ 「C++ のモジュールの概要」 。マイクロソフト。2023 年 4 月 24 日。 1 2 3 4 5 ストロストルップ、ビャルネ (1996). "C++ の歴史: 1979-1991". プログラミング言語の歴史---II . ACM . pp. 699–769 . doi : 10.1145/234286.1057836 . ↑ ストロヴストルップ、ビャルネ (2021 年 12 月 16 日)。 「C++20: C++ の目標達成に向けて - ビャルネ・ストロヴストルップ - CppCon 2021」 。CppCon。2021 年 12 月 30 日時点のオリジナルより アーカイブ。2021 年 12 月 30 日 取得 。 ↑ Stroustrup, Bjarne (2020年6月12日). "混雑し変化する世界で繁栄する: C++ 2006–2020" . Proceedings of the ACM on Programming Languages . 4 (HOPL). Association for Computing Machinery (ACM): 1– 168. doi : 10.1145/3386320 . ISSN 2475-1421 . S2CID 219603741 . ↑ Naugler, David (2007 年 5 月) 「C++ および Java プログラマーのための C# 2.0: カンファレンス ワークショップ」 Journal of Computing Sciences in Colleges . 22 (5). C# は Java から強い影響を受けていますが、C++ からも強い影響を受けており、C++ と Java の両方の子孫と見なすのが最適です。 ↑ 「チャペル仕様書(謝辞)」 (PDF) 。Cray Inc. 2015年10月1日。 2018年6月24日にオリジナルから アーカイブ (PDF) 。 2016年 1月14日 取得 。 ↑ Fogus, Michael. "Rich Hickey Q&A" . Code Quarterly . 2017年1月11日の オリジナルからアーカイブ済み . 2017年 1月11日 取得 . ↑ Harry. H. Chaudhary (2014年7月28日)。 「Javaプログラミング面接攻略 :: 2000以上のJava面接問題と回答」 。 2021年5月27日にオリジナルから アーカイブ済み 。 2016年 5月29日 に取得。 ↑ Roger Poon (2017 年 5 月 1 日)。 「JS++ のスケーリング: 抽象化、パフォーマンス、および可読性」 。2020 年 5 月 11 日のオリジナルから アーカイブ済み。2020 年 4 月 21 日 取得 。 ↑ 「拡張言語の進化:Luaの歴史」 。www.lua.org 。 2023年 1月4日 取得 。 ↑ 「Nimプログラミング言語に関するFAQ」 。 2017年7月11日にオリジナルから アーカイブ済み 。 2020年 4月21日 に取得。 ↑ "9. クラス — Python 3.6.4 ドキュメント" . docs.python.org . 2012 年 10 月 23 日のオリジナルから アーカイブ済み. 2018 年 1 月 9 日 取得 . ↑ 「影響 - Rust リファレンス」 . doc.rust-lang.org . 2023 年 1 月 4 日 取得 。 ↑ ストロヴストルップ、ビャルネ (1997). "1". C++ プログラミング言語 (第 3 版). Addison-Wesley. ISBN 0-201-88954-4 OCLC 59193992 1 2 3 Stroustrup, B. (2014年5月6日). "講義: C++の本質。エジンバラ大学" . YouTube . 2015年4月28日のオリジナルから アーカイブ済み。 2015年 6月12日 取得 。 ↑ストロウストルップ、ビャルネ (2014 年 2 月 17 日)。 「C++ アプリケーション」 。stroustrup.com。2021 年 4 月 4 日のオリジナルから アーカイブ済み 。2014 年 5 月 5 日 取得 。 1 2 "ISO/IEC 14882:2024" 。国際標準化機構 。 2020年 10月21日 取得。 ↑ 「ビャルネ ・ ストロヴストルップのホームページ」 。www.stroustrup.com 。 2019年5月14日のオリジナルから アーカイブ済み 。 2013年 5月15日 取得。 ↑ 「C++ IS スケジュール」 (PDF) 。2020 年 8 月 10 日にオリジナルから アーカイブ (PDF) 。2020 年 8 月 9 日 に取得。 ↑ "C++29 - cppreference.com" . cppreference.com . 2026年 7月10日 取得 . 1 2 ストロヴストルップ、ビャルネ (2010 年 3 月 7 日)。 「ビャルネ・ストロヴストルップの FAQ: C++ はいつ発明されたのか?」 。 stroustrup.com。2016 年 2 月 6 日のオリジナルから アーカイブ済み 。2010 年 9 月 16 日 取得 。 1 2 3 ストロストルップ、ビャルネ。 「C++の歴史 :1979−1991」 (PDF) 。 2019年2月2日にオリジナルから アーカイブ (PDF) 。 2013年 7月18日 に取得 。 1 2 3 4 Stroustrup, Bjarne (1993 年 3 月). C++ の歴史: 1979–1991 (PDF) . 第 2 回 ACM SIGPLAN プログラミング言語の歴史に関する会議。Association for Computing Machinery。pp. 271–297。doi : 10.1145 /154766.155375 。2026 年 6 月 9 日 に 取得 。 ↑ マロイ、リッチ(1988年8月)。 「C++の起源」 (PDF) 。BYTE。p.216 。 2026年 6 月 9日 取得 。 ↑ ストロヴストルップ、ビャルネ。 「C++プログラミング言語」 (初版 )。 2012年8月9日時点のオリジナルより アーカイブ。 2010年 9月16日 取得 。 ↑ ストロストルップ、ビャルネ。 「C++プログラミング言語」 (第2 版)。 2012年8月9日時点のオリジナルから アーカイブ。 2010年 9月16日 取得 。 ↑ Sutter, Herb (2016年6月30日). "旅行記: 夏のISO C++標準化会議 (オウル)" . herbsutter.com . 2016年10月8日に オリジナル からアーカイブ済み。 C++17の次の標準はC++20になります ↑ Dusíková, Hana (2019年11月6日). "N4817: 2020年プラハ会議の招待状と情報" (PDF) . 2019年12月29日のオリジナルから アーカイブ (PDF) . 2020年 2月13日 取得. ↑ 「現在の状況」 。isocpp.org 。 2020年9 月 8日のオリジナルから アーカイブ済み 。 2020年 9月7日 に取得。 ↑ "C++20 承認済み -- Herb Sutter" . isocpp.org . 2020 年 9 月 11 日のオリジナルから アーカイブ済み. 2020 年 9 月 8 日 取得 . ↑ 「コンピュータ科学のパイオニア、ビャルネ・ストロヴストルップ氏が2018年チャールズ・スターク・ドレイパー工学賞を受賞」 (プレスリリース)。米国工学アカデミー。2018年1月3日。 2018年1月3日の オリジナル からアーカイブ。 2021年 12月14日 取得 。 ↑ TIOBE(2024年11月)。 「2024年11月のTIOBEインデックス」 。TIOBE.com。TIOBE 社。 2024年11 月 18日のオリジナルから アーカイブ済み 。 2024年 11月18日 に取得。 ↑ クラバーン、トーマス(2025年3月2日) 「C++開発者がプログラミング言語を『深刻な攻撃』から守るための支援を呼びかけ」 「 . The Register . 2025年 3月5日 取得 .↑ 「ビャルネ・ストロヴストルップのFAQ – 「C++」という名前の由来は?」 。 2016年2月6日のオリジナルから アーカイブ済み 。 2008年 1月16日 取得。 ↑ 「C++プログラマのためのC言語」 。 ノースイースタン大学 。 2010年11月17日の オリジナルからアーカイブ済み 。 2015年 9月7日 取得。 ↑ ストロストルップ、ビャルネ。 「現実世界における、そして現実世界のための言語の進化:C++ 1991-2006」 (PDF) 。 2007年11月20日のオリジナルから アーカイブ (PDF) 。 2013年 8月14日 取得 。 ↑ 「ISO/IEC 14882:1998」 。国際標準化機構。 2017年1月15日のオリジナルから アーカイブ済み。 2018年 11月23日 取得 。 ↑ 「ISO/IEC 14882:2003」 。国際標準化機構。 2021年8月13日にオリジナルから アーカイブ済み。 2018年 11月23日 に取得 。 1 2 "ISO/IEC 14882:2011" 。国際標準化機構。 2016年5月27日のオリジナルから アーカイブ済み 。 2018年 11月23日 取得。 ↑ 「ISO/IEC 14882:2014」 。国際標準化機構。 2016年4月29日のオリジナルから アーカイブ済み。 2018年 11月23日 取得 。 ↑ 「ISO/IEC 14882:2017」 。国際標準化機構。 2013年1月29日のオリジナルから アーカイブ済み 。 2017年 12月2日 に取得。 ↑ 「ISO/IEC 14882:2020」 。国際標準化機構。 2020年12月16日時点のオリジナルから アーカイブ。 2020年 12月16日 取得 。 ↑ 「会議と参加」 。Standard C++ に関するニュース、ステータス、ディスカッション 。Standard C++ Foundation。2025 年 9 月 6 日 取得 。 ↑ 「国際標準があります。C++0x は満場一致で承認されています」 。 サッターズミル 。2011 年 8 月 12 日。2018 年 6 月 28 日のオリジナルから アーカイブ。2018 年 11 月 23 日 取得 。 ↑ 「C++の未来」 。 2018年10月23日にオリジナルから アーカイブ済み 。 2018年 11月23日 に channel9.msdn.com経由で取得。 ↑ "C++14 があります! : 標準 C++" . isocpp.org . 2014 年 8 月 19 日のオリジナルから アーカイブ済み. 2014 年 8 月 19 日 取得 . ↑ サッター、ハーブ(2017年7月15日)。 「旅行記:夏季ISO C++標準化会議(トロント)」 。 2017年8月6日のオリジナルから アーカイブ。 2017年 8月4日 取得 。 ↑ 「ISO/IEC TR 18015:2006」 。国際標準化機構。 2019年1月15日のオリジナルから アーカイブ済み。 2019年 2月15日 に取得 。 ↑ 「ISO/IEC TR 19768:2007」 。国際標準化機構。 2016年3月4日のオリジナルから アーカイブ済み 。 2019年 2月15日 取得。 ↑ 「ISO/IEC TR 29124:2010」 。国際標準化機構。 2019年1月12日にオリジナルから アーカイブ済み 。 2019年 2月15日 に取得。 ↑ 「ISO/IEC TR 24733:2011」 。国際標準化機構。 2019年1月15日にオリジナルから アーカイブ済み。 2019年 2月15日 に取得 。 ↑ 「ISO/IEC TS 18822:2015」 。国際標準化機構。 2019年1月15日のオリジナルから アーカイブ済み。 2019年 2月15日 に取得 。 ↑ 「ISO/IEC TS 19570:2015」 。国際標準化機構。 2019年1月15日のオリジナルから アーカイブ済み。 2019年 2月15日 取得 。 ↑ 「ISO/IEC TS 19841:2015」 。国際標準化機構。 2019年1月15日のオリジナルから アーカイブ済み。 2019年 2月15日 に取得 。 ↑ 「ISO/IEC TS 19568:2015」 。国際標準化機構。 2019年1月15日にオリジナルから アーカイブ済み。 2019年 2月15日 に取得 。 ↑ 「ISO/IEC TS 19217:2015」 。国際標準化機構。 2019年1月15日のオリジナルから アーカイブ済み。 2019年 2月15日 取得 。 ↑ 「ISO/IEC TS 19571:2016」 。国際標準化機構。 2019年1月15日のオリジナルから アーカイブ済み。 2019年 2月15日 取得 。 ↑ 「ISO/IEC TS 19568:2017」 。国際標準化機構。 2019年1月15日のオリジナルから アーカイブ済み。 2019年 2月15日 取得 。 ↑ 「ISO/IEC TS 21425:2017」 。国際標準化機構。 2019年1月15日のオリジナルから アーカイブ済み。 2019年 2月15日 取得 。 ↑ 「ISO/IEC TS 22277:2017」 。国際標準化機構。 2019年1月15日のオリジナルから アーカイブ済み。 2019年 2月15日 に取得 。 ↑ 「ISO/IEC TS 19216:2018」 。国際標準化機構。 2019年1月15日のオリジナルから アーカイブ済み。 2019年 2月15日 に取得 。 ↑ 「ISO/IEC TS 21544:2018」 。国際標準化機構。 2019年1月15日のオリジナルから アーカイブ済み。 2019年 2月15日 に取得 。 ↑ 「ISO/IEC TS 19570:2018」 。国際標準化機構。 2019年1月15日のオリジナルから アーカイブ済み。 2019年 2月15日 に取得 。 ↑ 「ISO/IEC TS 23619:2021」 。国際標準化機構。 2018年12月15日のオリジナルから アーカイブ済み 。 2021年 10月11日 取得。 ↑ 「ISO/IEC TS 9922:2024」 。国際標準化機構。 2025年4月1日にオリジナルから アーカイブ済み。 2025年 4月1日 に取得 。 ↑ 「ISO/IEC TS 19568:2024」 。国際標準化機構。 2025年2月25日時点のオリジナルから アーカイブ。 2025年 4月1日 取得 。 ↑ B. ストロストルップ(セルジオ・デ・シモーネによるインタビュー)(2015年4月30日)。 「ストロストルップ:C++17に関する考察 - インタビュー」 。 2015年7月8日のオリジナルから アーカイブ。 2015年 7月8日 に取得 。 ↑ ストロストルップ、ビャルネ (2000). C++ プログラミング言語 (特別 版). Addison-Wesley. p. 46. ISBN 0-201-70073-5 。↑ ストロストルップ、ビャルネ。 「C++プログラミング言語(第3版)の未解決問題」 。 2014年5月5日のオリジナルから アーカイブ済み 。 2014年 5月5日 に取得。 1 2 「作業草案、プログラミング言語 — C++: ライブラリの紹介」 . eel.is . §16.1 [library.general] . 2026年 6月9日 取得 . ↑ 「作業草案、プログラミング言語 — C++: C++ライブラリモジュール」 . eel.is. §16.4.2.4 [std.modules] . 2026年 6月9日 取得 。 ↑ Kreft, Klaus; Langer, Angelika (1996 年 11 月~12 月) 「標準 C++ ライブラリのイテレータ」 C ++ Report 2026 年 6 月 9 日 取得 。 ↑ 「アレクサンダー・A・ステパノフ論文集」 . stepanovpapers.com . C++標準テンプレートライブラリ. 2026年 6月9日 取得 . ↑ "C++ コアガイドライン" . isocpp.github.io . 2020 年 2 月 16 日のオリジナルから アーカイブ済み . 2020 年 2 月 9 日 取得. ↑ "C++ コア ガイドライン - FAQ.6: これらのガイドラインは ISO C++ 標準化委員会によって承認されていますか? これらは委員会の合意を表していますか? " isocpp.github.io . 2026 年 4 月 16 日 取得 これらのガイドラインは ISO C++ 標準化委員会によって承認されていますか? これらは委員会の合意を表していますか? いいえ。これらのガイドラインは標準の範囲外です。これらは標準に役立ち、現在の Standard C++ を効果的に使用する方法に関する最新のガイドラインとして維持されることを意図しています。私たちは、委員会によって進化する標準と同期するように努めています。 ↑ 「ビャルネ・ストロヴストルップがC++コアガイドライン:標準C++を発表」 isocpp.org 2020 年5月11日のオリジナルから アーカイブ済み 。 2020年 3月31日 取得 。 ↑ 「C++ コア ガイドライン チェッカーの使用」 。Microsoft Learn。2021 年 8 月 13 日のオリジナルから アーカイブ済み 。2020 年 3 月 31 日 取得 。 1 2 "microsoft/GSL" 。2021年7月18日。 2021年7月18日のオリジナルから アーカイブ済み 。 2021年 7月18日に GitHub 経由で取得。 ↑ 「C++ ABI の概要」 。2001 年 3 月 20 日。2018 年 7 月 10 日のオリジナルから アーカイブ済み。2006 年 5 月 30 日 取得 。 ↑ 「ビャルネ・ストロヴストルップのFAQ – CはC++のサブセットですか?」 。 2016年2月6日のオリジナルから アーカイブ 。 2014年 5月5日 に取得。 ↑ 「C9X – 新しいC標準」 。 2018年6月21日にオリジナルから アーカイブ済み 。 2008年 12月27日 に取得。 ↑ 「GCCにおけるC++0xサポート」 。 2010年7月21日にオリジナルから アーカイブ済み 。 2010年 10月12日 に取得。 ↑ 「VC10 の C++0x コア言語機能: 表」 。2010 年 8 月 21 日のオリジナルから アーカイブ。2010 年 10 月 12 日 取得 。 ↑ "Clang - C++98、C++11、およびC++14のステータス" . Clang.llvm.org. 2013年5月12日。 2013年7月4日のオリジナルから アーカイブ済み。 2013年 6月10日 取得 。 ↑ Bokil, Milind A. (2021). " C/C++およびJavaプログラム内でのアセンブリルーチンの記述". ResearchGate. 2025年4月1日取得。 ↑ De Vilhena, Paulo Emílio; Lahav, Ori; Vafeiadis, Viktor; Raad, Azalea (2024). "Extending the C/C++ Memory Model with Inline Assembly" . Proceedings of the ACM on Programming Languages . 8 : 1081–1107 . arXiv : 2408.17208 . doi : 10.1145/3689749 . ↑ cppreference.com 寄稿者。「 asm 宣言」。cppreference.com。2025年 4 月 1 日に取得。 ↑ 「拡張アセンブリ言語(GNUコンパイラコレクションを使用)」 。 GCCオンラインドキュメント 。GNUプロジェクト。 2025年 4月1日 取得 。 ↑ Intel Corporation. "インラインアセンブリ". Intel® C++ Compiler Classic 開発者ガイドおよびリファレンス 、バージョン 2021.9。2025 年 4 月 1 日取得。 ↑ IBM. 「インラインアセンブリステートメント(IBM拡張)」. IBMドキュメント . 2025年4月1日取得。 ↑ 「インラインアセンブラの概要」 。Microsoft Learn。Microsoft 。 2025年 4月1日 取得 。 ↑ 「CおよびC++とアセンブリ言語のインターフェース」 。 テキサス・インスツルメンツ 。テキサス・インスツルメンツ株式会社。2025年2月23日。 2025年 4月1日 取得 。 ↑ 「GCCにおけるC++からASMへのリンク」 。OSDev Wiki 。 2025年 4月1日 取得 。
さらに読む アブラハムズ、デイビッド ;グルトヴォイ、アレクセイ(2005)。C ++テンプレートメタプログラミング:Boost以降の概念、ツール、テクニック 。アディソン・ウェスリー。ISBN 0-321-22725-5 。アレクサンドレスク、アンドレイ (2001)。現代C++設計:ジェネリックプログラミングとデザインパターンの応用 。アディソン・ウェスリー。ISBN 0-201-70431-5 。アレクサンドレスク、アンドレイ ;サッター、ハーブ (2004)。C ++設計とコーディング標準:プログラム作成のためのルールとガイドライン 。アディソン・ウェスリー。ISBN 0-321-11358-6 。ベッカー、 ピート (2006)。C ++標準ライブラリ拡張 :チュートリアルとリファレンス 。アディソン・ウェスリー。ISBN 0-321-41299-0 。Brokken, Frank (2026) [原著出版年: 1994]. C++ アノテーション . ISBN 978-90-367-0470-0 。 コプリエン、ジェームズ・O. ( 1994) [訂正版再版、初版発行年1992年]。Advanced C++: Programming Styles and Idioms。Addison -Wesley。ISBN 0-201-54855-0 。デューハースト、スティーブン・C. (2005). C++ 共通知識: 中級プログラミングの基礎 . アディソン・ウェスリー. ISBN 0-321-32192-8 。 情報技術産業協議会 (2003年10月15日)。プログラミング言語 – C++ (第2 版)。ジュネーブ:ISO/IEC。14882:2003(E)。Josuttis, Nicolai M. (2012). C++標準ライブラリ、チュートリアルとリファレンス (第2 版). Addison-Wesley. ISBN 978-0-321-62321-8 。 ケーニッヒ、アンドリュー ;ムー、バーバラ E. (2000).加速C++ ― 実践例によるプログラミング . アディソン・ウェスリー. ISBN 0-201-70353-X 。スタンリー・B・リップマン ;ラジョワ、ジョゼ。ムー、バーバラ E. (2011)。C++ 入門書 (第 5 版)。アディソン・ウェスリー。ISBN 978-0-321-71411-4 。リップマン、スタンリー・B. (1996). C++オブジェクトモデルの内部 。アディソン・ウェスリー。ISBN 0-201-83454-5 。 マイヤーズ、スコット (2005)。『効果的なC++』 (第3 版)。アディソン・ウェスリー。ISBN 0-321-33487-6 。ストロヴストルップ 、ビャルネ (2013)。C ++プログラミング言語 (第4 版)。アディソン・ウェスリー。ISBN 978-0-321-56384-2 。ストロヴストルップ、ビャルネ (1994)。C ++の設計と進化 。アディソン・ウェスリー。ISBN 0-201-54330-3 。ストロヴストルップ、ビャルネ (2014)。プログラミング:C++を用いた原理と実践 (第2 版)。アディソン・ウェスリー。ISBN 978-0-321-99278-9 。サッター、ハーブ (2001)。『More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions』 。アディソン・ウェスリー。ISBN 0-201-70434-X 。サッター、ハーブ ( 2004)。『卓越したC++スタイル 』アディソン・ウェスリー。ISBN 0-201-76042-8 。ヴァンデフォールデ、デイビッド。ジョスティス、ニコライ M. (2003)。C++ テンプレート: 完全なガイド 。アディソン・ウェスリー。ISBN 0-201-73484-2 。
外部リンク JTC1/SC22/WG21 – ISO/IEC C++標準化ワーキンググループ Standard C++ Foundationは、標準C++の利用と理解を促進する非営利団体です。ビャルネ・ストロヴストルップ 氏は同団体の理事を務めています。 C++キーワード C++式 C++演算子の優先順位