名前空間
変種
操作

C++ の歴史

提供: cppreference.com
< cpp‎ | language
 
 
C++言語
一般的なトピック
フロー制御
条件付き実行文
繰り返し文 (ループ)
ジャンプ文
関数
関数宣言
ラムダ関数宣言
inline 指定子
例外指定 (C++20未満)
noexcept 指定子 (C++11)
例外
名前空間
指定子
decltype (C++11)
auto (C++11)
alignas (C++11)
記憶域期間指定子
初期化
代替表現
リテラル
ブーリアン - 整数 - 浮動小数点
文字 - 文字列 - nullptr (C++11)
ユーザ定義 (C++11)
ユーティリティ
属性 (C++11)
typedef 宣言
型エイリアス宣言 (C++11)
キャスト
暗黙の変換 - 明示的な変換
static_cast - dynamic_cast
const_cast - reinterpret_cast
メモリ確保
クラス
クラス固有の関数特性
特別なメンバ関数
テンプレート
その他
C++ の歴史
 

目次

[編集] 初期の C++

  • 1979年 最初の C with Classes が実装される。
  1. 新しい機能: クラスメンバ関数派生クラス、分割コンパイル、public および private アクセス制御friend、関数引数の型チェック、デフォルト引数インライン関数代入演算子のオーバーロードコンストラクタデストラクタ、f(void) と同じ f()、呼び出し関数および戻り関数 (C++ にはない同期機能)。
  2. ライブラリ: 並行処理ライブラリ (C++ にはない)。
  • 1982年 C with Classes のリファレンスマニュアルが発行される。
  • 1984年 C84 が実装され、リファレンスマニュアルが発行される。
  • 1985年 Cfront 1.0
  1. 新しい機能: 仮想関数、関数および演算子のオーバーロード参照new および delete 演算子、const キーワード、スコープ解決演算子。
  2. ライブラリの追加: complexstringiostream
  • 1985年 プログラミング言語 C++ 第1版
  • 1986年 多重継承、例外処理、テンプレートなどの残されている設計目標を記述した "whatis?" 文書。
  • 1987年 GCC 1.15.3 の C++ サポート。
  • 1989年 Cfront 2.0
  1. 新しい機能: 多重継承メンバへのポインタprotected アクセス、型安全なリンケージ、抽象クラスstatic および const メンバ関数、クラス固有の new および delete
  2. ライブラリの追加: 入出力マニピュレータ
  • 1990年 注解 C++ リファレンスマニュアル

この本は、まだ実装されていないいくつかの機能を含めて、設計の観点から言語を説明しました。 ISO までの事実上の標準としての役割を果たしました。

  1. 新しい機能: 名前空間例外処理ネストしたクラステンプレート
  • 1991年 Cfront 3.0
  • 1991年 プログラミング言語 C++ 第2版

[編集] 標準 C++

  • 1990年 ANSI C++ 委員会が設立される。
  • 1991年 ISO C++ 委員会が設立される。
  • 1992年 C++ で STL が実装される。
  • 1998年 C++98 (ISO/IEC 14882:1998)
  1. 新しい機能: RTTI (dynamic_casttypeid)、共変戻り値型キャスト演算子mutablebool、条件式内の宣言、テンプレートの実体化メンバテンプレート、export。
  2. ライブラリの追加: ロケールbitsetvalarrayauto_ptrテンプレート化された stringiostream および complex
  3. STL をベースに: コンテナアルゴリズムイテレータ関数オブジェクト
  • 1998年 プログラミング言語 C++ 第3版
  • 1999年 標準のための新しい高品質なライブラリの候補を生み出すために、委員会のメンバによって boost が設立される。
  • 2003年 C++03 (ISO/IEC 14882:2003)

これは、正誤票より少し多くのことが意図された、マイナーな改訂でした。

  1. 新しい機能: 値初期化
C++03 で修正された欠陥報告 (コア92個、ライブラリ125個)

この TR は様々な C++ の抽象化のコストを議論し、実装のガイダンスを提供し、組込みシステムにおける C++ の使用を議論し、 C の ISO/IEC TR 18037:2008 <iohw.h> に対するインタフェース <hardware> を導入しました。

この TR は、 C++ 標準ライブラリに以下のものを追加する、 C++ ライブラリの拡張です。

  1. boost から: 参照ラッパースマートポインタメンバ関数アダプタresult_ofバインダ関数オブジェクトラッパー型特性乱数、数学の特殊関数、タプル配列ラッパー非順序コンテナ (ハッシュを含む)、正規表現
  2. C99 から: C99 で新たに追加された <math.h> の数学関数、ブランク文字分類浮動小数点環境16進浮動小数点入出力マニピュレータ固定サイズの整数型long long 型va_copysnprintf() および vfscanf() ファミリーの関数、printf() および scanf() ファミリーの関数のための C99 の変換指定子。

特殊関数を除く TR1 のすべてのものは、若干の変更を加えて、 C++11 に含まれました。

この国際標準は、 TR1 の一部であったけれども C++11 に含まれなかった特殊関数 (楕円積分、指数積分、ラゲール多項式、ルジャンドル多項式、エルミート多項式、ベッセル関数、ノイマン関数、ベータ関数、リーマンゼータ関数) を追加する、 C++11 標準ライブラリの拡張です。 この標準は C++17 にマージされました。

主記事: C++11

C++ プログラマが利用可能な抽象化の向上と既存の慣習の標準化の両方のために、多数の変更が導入されました。

この TR は浮動小数点算術に対する IEEE 754-2008 標準の10進浮動小数点型 std::decimal::decimal32、std::decimal::decimal64、std::decimal::decimal128 を実装します。

主記事: C++14

C++ 標準のマイナーな改訂。

  • 2015年 ファイルシステムライブラリ TS (ISO/IEC TS 18822:2015) (ISO Store) (2014 draft)

この TS は boost.filesystem V3 (にいくつかの変更と拡張を加えたもの) をベースとしたファイルシステムライブラリを規定する実験的な C++ ライブラリの拡張です。 この TS は C++17 にマージされました。

この TS はすべての標準ライブラリのアルゴリズムに対する並列化およびベクトル化 API を標準化し、reducetransform_reduceexclusive_scan といった新しいアルゴリズムを追加します。 この TS は C++17 にマージされました。

  • 2015年 トランザクショナルメモリのための拡張 TS (ISO/IEC TS 19841:2015) (ISO Store) (2015 draft)

この TS はトランザクショナルメモリの意味論を実装する同期化ブロック、アトミックブロックおよびトランザクションセーフな関数で C++ のコア言語を拡張します。

  • 2015年 ライブラリの基礎のための拡張 TS (ISO/IEC TS 19568:2015) (ISO Store) (2015 draft)

この TS はいくつかの新しいコンポーネント (optionalanystring_viewsamplesearchapply多相アロケータおよび型特性に対する変数テンプレート) を C++ 標準ライブラリに追加します。 この TS は C++17 にマージされました。

この TS は、メタプログラミングを補助し、テンプレート実体化の診断を単純化する、コンセプト (名前付きの型要件) および制約 (テンプレート、関数および変数の宣言において使用できる型の制限) で C++ のコア言語を拡張します。 コンセプトを参照してください。 この TS は、一部を切り捨てて、 C++20 にマージされました。

この TS は std::future に対するいくつかの拡張、ラッチおよびバリア、およびアトミックなスマートポインタを含めるために C++ ライブラリを拡張します。

主記事: C++17

C++11 後の C++ 標準のメジャーな改訂。

この TS は範囲 (新しい、よりパワフルな、イテレータの組を置き換える抽象化) および範囲ビュー、番兵範囲、オンザフライ変換のための射影、新しいイテレータアダプタおよびアルゴリズムを含めるために、 C++ ライブラリを拡張します。 この拡張は最終的に sort(v); でベクタをソートできるようにします。

この TS はスタックレスコルーチン (再開可能な関数) を含めるために C++ のコア言語と標準ライブラリを拡張します。 キーワード co_awaitco_yield および co_return を追加します。

  • 2018年 ネットワーク処理のための拡張 TS (ISO/IEC TS 19216:2018) (ISO Store) (2017 draft)

この TS は boost.asio をベースとした TCP/IP ネットワーク処理を含めるために C++ ライブラリを拡張します。

この TS はモジュールを含めるために C++ コア言語を拡張します。 キーワード moduleimport が追加され、キーワード export が新しい意味で再導入されます。

  • 2018年 並列化のための拡張バージョン2 TS (ISO/IEC TS 19570:2018) (ISO Store) (draft)

この TS は2つの実行ポリシー (unseq および vec)、追加の並列アルゴリズム (reduction_plusfor_loop_strided など)、並列タスクの fork と join のためのタスクブロック、SIMD 型およびそれらの型に対する演算を含めるために C++ ライブラリを拡張します。

主記事: C++20

C++17 後の C++ 標準のメジャーな改訂。

[編集] 今後の動向

[編集] 関連項目

[編集] 外部リンク