Namespaces
Variants

History of C++

From cppreference.net
C++ language
General topics
Flow control
Conditional execution statements
Iteration statements (loops)
Jump statements
Functions
Function declaration
Lambda function expression
inline specifier
Dynamic exception specifications ( until C++17* )
noexcept specifier (C++11)
Exceptions
Namespaces
Types
Specifiers
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Storage duration specifiers
Initialization
Expressions
Alternative representations
Literals
Boolean - Integer - Floating-point
Character - String - nullptr (C++11)
User-defined (C++11)
Utilities
Attributes (C++11)
Types
typedef declaration
Type alias declaration (C++11)
Casts
Memory allocation
Classes
Class-specific function properties
Special member functions
Templates
Miscellaneous
History of C++

目次

初期のC++

  • 1979年: C with Classesが初めて実装される
  1. 新機能: 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++には非対応)
  2. ライブラリ: 並行タスクライブラリ(C++には非対応)
  • 1982年: C with Classes リファレンスマニュアル発行
  • 1984年: C84 実装、リファレンスマニュアル発行
  • 1985年: Cfront 1.0
  1. 新機能: virtual functions 、関数と operator overloading references 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. 新機能: 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)
  1. 新機能: RTTI ( dynamic_cast , typeid ), 共変戻り値型 , キャスト演算子 , mutable , bool , 条件内での宣言, テンプレートのインスタンス化 , メンバーテンプレート , export
  2. ライブラリの追加: ロケール , bitset , valarray , auto_ptr , テンプレート化された文字列 , I/Oストリーム , および 複素数 .
  3. 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++標準ライブラリに以下を追加します:

  1. Boost から: reference_wrapper , スマートポインタ , メンバ関数 , result_of , bind , function , 型特性 , 乱数 , 数学的特殊関数, tuple , array , 非順序連想コンテナ ( hash を含む), および 正規表現 .
  2. 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 期間

主な記事: C++11

C++プログラマーが利用可能な抽象化を改善し、既存の手法を標準化するために、多数の変更が導入されました

このTRはIEEE 754-2008浮動小数点演算標準の10進浮動小数点型を実装します: std::decimal::decimal32 std::decimal::decimal64 、および std::decimal::decimal128

C++14 期間

主な記事: C++14

C++標準のマイナーリビジョン

この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に統合されました。

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

このTSはC++ライブラリを拡張し、 いくつかの拡張機能 std::future latches および barriers 、そしてアトミックスマートポインタに追加します。

C++17 期間

主な記事: C++17

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 が新しい意味で再導入されます。

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

C++20 期間

主な記事: C++20

C++17以降の主要なC++標準の改訂

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

将来の開発

主な記事: C++23

C++標準の次のメジャーリビジョン

関連項目

Cドキュメント for Cの歴史
翻訳の説明: - 「C documentation」→「Cドキュメント」 - 「History of C」→「Cの歴史」 - HTMLタグ、属性、構造は完全に保持 - C++関連用語は翻訳せず保持 - フォーマットとコード構造は元のまま維持

外部リンク

1. C++の歴史: 1979-1991
2. 実世界における言語の進化: C++ 1991-2006
3. 混雑し変化する世界での繁栄: C++ 2006-2020
4. 標準C++財団
5. WikipediaのC++
6. C++標準化委員会