名前空間
変種
操作

C++の歴史

From cppreference.com
< cpp‎ | language
 
 
C++言語
全般
フロー制御
条件実行文
if
繰り返し文 (ループ)
for
範囲for (C++11)
ジャンプ文
関数
関数宣言
ラムダ式
inline指定子
動的例外仕様 (C++17まで*)
noexcept指定子 (C++11)
例外
名前空間
指定子
const/volatile
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
記憶域期間指定子
初期化
代替表現
リテラル
ブーリアン - 整数 - 浮動小数点数
文字 - 文字列 - nullptr (C++11)
ユーザー定義 (C++11)
ユーティリティ
属性 (C++11)
typedef宣言
型エイリアス宣言 (C++11)
キャスト
メモリ確保
クラス
クラス固有の関数プロパティ
explicit (C++11)
static

特殊メンバ関数
テンプレート
その他
C++の歴史
 

目次

[編集] 初期のC++

  • 1979年: C with Classesが最初に実装される
  1. 新機能: クラスメンバ関数派生クラス、個別コンパイル、publicおよびprivateアクセス制御フレンド、関数引数の型チェック、デフォルト引数インライン関数オーバーロードされた代入演算子コンストラクタデストラクタf()f(void) と同じ、call-functionとreturn-function(同期機能、C++にはない)
  2. ライブラリ: 並行タスクライブラリ(C++にはない)
  • 1982年: C with Classesのリファレンスマニュアルが発行される
  • 1984年: C84が実装され、リファレンスマニュアルが発行される
  • 1985年: Cfront 1.0
  1. 新機能: 仮想関数、関数および演算子オーバーロード参照newおよびdelete演算子、キーワードconst、スコープ解決演算子
  2. ライブラリ追加: 複素数string (AT&T版)、I/Oストリーム
  • 1985年: The C++ Programming Language, 第1版
  • 1986年: 多重継承、例外処理、テンプレートなど、残りの設計目標を文書化した「whatis?」論文。
  • 1987年: GCC 1.15.3におけるC++サポート
  • 1989年: Cfront 2.0
  1. 新機能: 多重継承メンバへのポインタprotectedアクセス、型安全リンケージ、抽象クラスstaticおよびconst修飾メンバ関数、クラス固有のnewおよびdelete
  2. ライブラリ追加: I/Oマニピュレータ
  • 1990年: The Annotated C++ Reference Manual

この本は、まだ実装されていない機能も含め、設計された言語を記述していた。ISO標準化まで事実上の標準として機能した。

  1. 新機能: 名前空間例外処理ネストされたクラステンプレート
  • 1991年: Cfront 3.0
  • 1991年: The C++ Programming Language, 第2版

[編集] 標準C++

  • 1990年: ANSI C++委員会設立
  • 1991年: ISO C++委員会設立
  • 1992年: STLがC++で実装される

[編集] C++98/03期間

  • 1998年: C++98 (ISO/IEC 14882:1998)
  1. 新機能: RTTI (dynamic_cast, typeid)、共変戻り値型キャスト演算子mutablebool、条件内の宣言、テンプレートインスタンス化メンバテンプレート、export
  2. ライブラリ追加: ロケールbitsetvalarrayauto_ptrテンプレート化された文字列I/Oストリーム、および複素数
  3. STLに基づく: コンテナアルゴリズムイテレータ関数オブジェクト
  • 1998年: The C++ Programming Language, 第3版
  • 1999年: 委員会のメンバーによって、標準用の新しい高品質な候補ライブラリを開発するためにBoostが設立される。
  • 2003年: C++03 (ISO/IEC 14882:2003)

これは小さな改訂で、技術的な正誤表とほとんど変わらないことを意図していた。この改訂では値初期化の定義が導入された。

C++03で修正された欠陥レポート (コア92件、ライブラリ125件)

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

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

  1. Boostから: reference_wrapperスマートポインタメンバ関数result_ofbindfunction型特性乱数、特殊数学関数、tuplearray非順序連想コンテナhashを含む)、および正規表現
  2. C99から: C99で新しく追加された<math.h>からの数学関数、空白文字クラス浮動小数点環境hexfloat I/Oマニピュレータ、固定サイズ整数型long long型、va_copysnprintf()およびvfscanf()関数群、およびprintf()およびscanf()関数群のC99変換指定子。

特殊関数を除くTR1のすべては、いくつかの小さな変更を加えてC++11に含まれた。

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

[編集] C++11期間

主要記事: C++11

既存の慣行を標準化し、C++プログラマが利用できる抽象化を改善するために、多数の変更が導入された。

このTRは、IEEE 754-2008 Standard for Floating-Point Arithmeticからの10進浮動小数点型であるstd::decimal::decimal32std::decimal::decimal64std::decimal::decimal128を実装する。

[編集] C++14期間

主要記事: C++14

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

このTSは、boost.filesystem V3(一部変更および拡張あり)に基づくファイルシステムライブラリを指定する実験的なC++ライブラリ拡張である。このTSはC++17に統合された。

このTSは、すべての標準ライブラリアルゴリズムに対して並列およびベクトル並列APIを標準化し、reducetransform_reduce、またはexclusive_scanのような新しいアルゴリズムも追加する。このTSはC++17に統合された。

このTSは、同期ブロックとアトミックブロック、およびトランザクションメモリセマンティクスを実装するトランザクションセーフ関数でC++コア言語を拡張する。

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

このTSは、C++コア言語をコンセプト(名前付き型要件)と制約(テンプレート、関数、変数宣言で許可される型の制限)で拡張し、メタプログラミングを支援し、テンプレートインスタンス化診断を簡素化する。詳細はコンセプトを参照。このTSは一部省略されてC++20に統合された。

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

[編集] C++17期間

主要記事: C++17

C++11に続くC++標準の主要な改訂

このTSは、イテレータペアに代わる新しくより強力な抽象化であるレンジを、レンジビュー、センチネルレンジ、オンザフライ変換のためのプロジェクション、新しいイテレータアダプタとアルゴリズムとともに含むようにC++ライブラリを拡張する。この拡張により、最終的にsort(v);でベクトルをソートすることが可能になる。

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

このTSは、boost.asioに基づくTCP/IPネットワークを含むようにC++ライブラリを拡張する。

このTSは、モジュールを含むようにC++コア言語を拡張する。これにより、特殊識別子moduleimportが追加され、キーワードexportが新しい意味で再導入される。

このTSは、2つの新しい実行ポリシー(unseqおよびvec)、reduction_plusfor_loop_stridedなどの追加の並列アルゴリズム、並列タスクのフォークとジョインのためのタスクブロック、SIMD型、およびそれらの型に対する操作を含むようにC++ライブラリを拡張する。

[編集] C++20期間

主要記事: C++20

C++17に続くC++標準の主要な改訂

このTSは、変数、列挙、クラスとそのメンバ、ラムダとそのキャプチャなど、プログラムエンティティを検査する機能でC++を拡張する。

[編集] 将来の開発

主要記事: C++23

C++標準の次期主要改訂

[編集] 関連項目

Cの歴史についてはCのドキュメントを参照

[編集] 外部リンク

1.  A History of C++: 1979-1991
2.  Evolving a language in and for the real world: C++ 1991-2006
3.  Thriving in a crowded and changing world: C++ 2006-2020
4.  Standard C++ foundation
5.  C++ on Wikipedia
6.  C++ Standards Committee
English 日本語 中文(简体) 中文(繁體)