History of C++
目次 |
初期のC++
- 1979年: C with Classesが初めて実装される
- 新機能: classes , member functions , derived classes , 分割コンパイル, public and private access control , friends , 関数引数の型チェック, default arguments , inline functions , overloaded assignment operator , constructors , destructors , f ( ) は f ( void ) と同じ, call-functionおよびreturn-function(同期機能、C++には非対応)
- ライブラリ: 並行タスクライブラリ(C++には非対応)
- 1982年: C with Classes リファレンスマニュアル発行
- 1984年: C84 実装、リファレンスマニュアル発行
- 1985年: Cfront 1.0
-
新機能:
virtual functions
、関数と
operator overloading
、
references
、
new
および
delete
演算子、
キーワード
const、スコープ解決演算子 -
ライブラリ追加:
複素数
、
string(AT&T版)、 I/Oストリーム
- 1985年: The C++ Programming Language、第1版
- 1986年: 残りの設計目標を文書化した「whatis?」ペーパー、多重継承、例外処理、テンプレートを含む
- 1987年: GCC 1.15.3でのC++サポート
- 1989年: Cfront 2.0
- 新機能: 多重継承 , メンバへのポインタ , protectedアクセス , 型安全リンケージ, 抽象クラス , static および const修飾 メンバ関数, クラス固有の new および delete
- ライブラリ追加: I/Oマニピュレータ
- 1990: The Annotated C++ Reference Manual
この書籍は、まだ実装されていない一部の機能を含め、設計通りに言語を説明しました。ISO規格が策定されるまで事実上の標準として機能しました。
- 新機能: namespaces , exception handling , nested classes , templates
- 1991: Cfront 3.0
- 1991: The C++ Programming Language, 2nd edition
Standard C++
- 1990: ANSI C++委員会設立
- 1991: ISO C++委員会設立
- 1992: STL C++で実装
C++98/03 期間
- 1998年: C++98 (ISO/IEC 14882:1998)
-
新機能: RTTI (
dynamic_cast,typeid), 共変戻り値型 , キャスト演算子 ,mutable,bool, 条件内での宣言, テンプレートのインスタンス化 , メンバーテンプレート , export - ライブラリの追加: ロケール , bitset , valarray , auto_ptr , テンプレート化された文字列 , I/Oストリーム , および 複素数 .
- STLベース: コンテナ , アルゴリズム , イテレータ , 関数オブジェクト
- 1998年: The C++ Programming Language、第3版
- 1999年: Boost が委員会メンバーによって設立され、標準規格向けの新たな高品質候補ライブラリの開発を開始。
- 2003年: C++03 (ISO/IEC 14882:2003)
これは、技術的な正誤表以上のものではないことを意図した小幅な改訂でした。この改訂では value initialization の定義が導入されています。
| C++03で修正された欠陥レポート (92 core, 125 library) |
|---|
、
|
このTRでは様々なC++抽象化のコストについて議論し、実装ガイダンスを提供し、組み込みシステムにおけるC++の使用について考察し、C言語のISO/IEC TR 18037:2008
<iohw.h>
に対する
<hardware>
インターフェースを紹介しました。
このTRはC++ライブラリ拡張であり、C++標準ライブラリに以下を追加します:
- Boost から: reference_wrapper , スマートポインタ , メンバ関数 , result_of , bind , function , 型特性 , 乱数 , 数学的特殊関数, tuple , array , 非順序連想コンテナ ( hash を含む), および 正規表現 .
-
C99 から:
<math.h>の C99 で新たに追加された数学関数, 空白文字クラス , 浮動小数点環境 , hexfloat I/O マニピュレータ, 固定サイズ整数型 ,long long型, va_copy , snprintf() および vfscanf() 関数ファミリ, ならびに printf() および scanf() 関数ファミリの C99 変換指定子.
TR1の特殊関数を除くすべての機能は、C++11にわずかな変更を加えて含まれました。
この国際規格はC++標準ライブラリの拡張であり、TR1の一部であったがC++11には含まれなかった特殊関数を追加するものです:楕円積分、指数積分、ラゲール多項式、ルジャンドル多項式、エルミート多項式、ベッセル関数、ノイマン関数、ベータ関数、リーマンゼータ関数。この規格は C++17に統合されました 。
C++11 期間
- 2011年: C++11 (ISO/IEC 14882:2011) ( ISOストア ) ( 公開後ドラフト(2012年版) ).
C++プログラマーが利用可能な抽象化を改善し、既存の手法を標準化するために、多数の変更が導入されました
このTRはIEEE 754-2008浮動小数点演算標準の10進浮動小数点型を実装します:
std::decimal::decimal32
、
std::decimal::decimal64
、および
std::decimal::decimal128
。
- 2012年: The Standard C++ Foundation 設立
- 2013年: The C++ Programming Language, 第4版
C++14 期間
- 2014: C++14 ( ISOストア ) ( ANSIストア ) ( 2014最終ドラフト )
C++標準のマイナーリビジョン
- 2015: ファイルシステムライブラリ TS (ISO/IEC TS 18822:2015) ( ISO Store ) ( 2014 draft )
このTSは、boost.filesystem V3(一部の修正と拡張を加えたもの)に基づくファイルシステムライブラリを規定する実験的なC++ライブラリ拡張です。このTSはC++17に統合されました。
このTSは、すべての標準ライブラリアルゴリズムに対する並列およびベクトル並列APIを標準化し、さらに
reduce
、
transform_reduce
、または
exclusive_scan
などの新しいアルゴリズムを追加します。このTSはC++17に統合されました。
このTSは、C++コア言語を同期ブロックとアトミックブロック、およびトランザクションセーフ関数で拡張し、トランザクショナルメモリセマンティクスを実装します。
このTSはC++標準ライブラリにいくつかの新しいコンポーネントを追加します: optional 、 any 、 string_view 、 sample 、 search 、 apply 、 ポリモーフィックアロケータ 、および型特性のための 変数テンプレート です。このTSはC++17に統合されました。
- 2015: コンセプトTSの拡張 (ISO/IEC TS 19217:2015) ( ISO Store ) ( 2015 draft )
このTSは、C++コア言語にコンセプト(名前付き型要件)と制約(テンプレート、関数、変数宣言で許可される型に対する制限)を追加し、メタプログラミングを支援し、テンプレートインスタンス化の診断を簡素化します。詳細は コンセプト を参照してください。このTSは一部の省略を伴ってC++20に統合されました。
このTSはC++ライブラリを拡張し、 いくつかの拡張機能 を std::future 、 latches および barriers 、そしてアトミックスマートポインタに追加します。
C++17 期間
- 2017: C++17 ( ISOストア ) ( ANSIストア ) ( n4659 2017-03-21 最終草案 )
C++11以降のC++標準の主要な改訂
このTSはC++ライブラリを拡張し、 ranges を含む、より強力な新しい抽象化を提供します。これはイテレータペアを置き換えるもので、range views、sentinel ranges、オンザフライ変換のためのprojections、新しいイテレータアダプタとアルゴリズムを含みます。この拡張により、最終的にベクターを sort ( v ) ; でソートすることが可能になります。
このTSはC++のコア言語と標準ライブラリを拡張し、スタックレスコルーチン(再開可能関数)を含むようにします。これにより、キーワード co_await 、 co_yield 、および co_return が追加されます。
このTSはC++ライブラリを拡張し、 boost.asio に基づくTCP/IPネットワーキング機能を含みます。
このTSはC++のコア言語を拡張し、モジュールを含むようにします。これにより、特別な識別子 module 、 import が追加され、キーワード export が新しい意味で再導入されます。
- 2018: 並行処理拡張バージョン2 TS (ISO/IEC TS 19570:2018) ( ISO Store ) ( 2018 draft )
このTSはC++ライブラリを拡張し、2つの新しい実行ポリシー( unseq および vec )、 reduction_plus や for_loop_strided などの追加の並列アルゴリズム、並列タスクのフォークと結合のためのタスクブロック、SIMD型およびそれらの型に対する操作を含みます。
C++20 期間
- 2020年: C++20 ( ISOストア ) (最終草案 n4860 2020-03-31 )
C++17以降の主要なC++標準の改訂
このTSは、変数、列挙型、クラスとそのメンバー、ラムダ式とそのキャプチャなど、プログラムエンティティを検査する機能でC++を拡張します。
将来の開発
- 実験的技術仕様
- 2026: C++ 最新ドラフト n5008 (2025-03-15)
C++標準の次のメジャーリビジョン
関連項目
|
Cドキュメント
for
Cの歴史
|
外部リンク
| 1. | C++の歴史: 1979-1991 |
| 2. | 実世界における言語の進化: C++ 1991-2006 |
| 3. | 混雑し変化する世界での繁栄: C++ 2006-2020 |
| 4. | 標準C++財団 |
| 5. | WikipediaのC++ |
| 6. | C++標準化委員会 |