C++ 歷史
目錄 |
[編輯] 早期 C++
- 1979 年:C with Classes 首次實現
- 新特性:類、成員函式、派生類、單獨編譯、public 和 private 訪問控制、友元、函式引數的型別檢查、預設引數、行內函數、過載賦值運算子、建構函式、解構函式、f() 等同於 f(void)、呼叫函式和返回函式(同步特性,不在 C++ 中)
- 庫:併發任務庫(不在 C++ 中)
- 1982 年:C with Classes 參考手冊出版
- 1984 年:C84 實現,參考手冊出版
- 1985 年:Cfront 1.0
- 1985 年:The C++ Programming Language,第 1 版
- 1986 年:“whatis?” 文件記錄了剩餘的設計目標,包括多重繼承、異常處理和模板。
- 1987 年:GCC 1.15.3 支援 C++
- 1989 年:Cfront 2.0
- 1990 年:The Annotated C++ Reference Manual
本書描述了已設計的語言,包括一些尚未實現的特性。它在 ISO 之前作為事實上的標準。
- 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)
- 新特性: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)
這是一個次要修訂,旨在僅僅是一個技術性更正。此修訂引入了值初始化的定義。
本 TR 討論了各種 C++ 抽象的成本,提供了實現指導,討論了 C++ 在嵌入式系統中的使用,並引入了 <hardware>
介面,用於 C 的 ISO/IEC TR 18037:2008 <iohw.h>
。
本 TR 是 C++ 庫擴充套件,向 C++ 標準庫添加了以下內容
- 來自 Boost:reference_wrapper、智慧指標、成員函式、result_of、bind、function、型別特徵、隨機、數學特殊函式、tuple、array、無序容器(包括hash)和正則表示式。
- 來自 C99:C99 中新增的
<math.h>
中的數學函式、空白字元類別、浮點環境、hexfloat I/O 操縱器、固定大小整數型別、long long
型別、va_copy、snprintf() 和 vfscanf() 函式族以及 C99 為 printf() 和 scanf() 函式族指定的轉換符。
TR1 的所有內容(特殊函式除外)都包含在 C++11 中,並進行了少量更改。
本國際標準是 C++ 標準庫擴充套件,添加了 TR1 的一部分,但未包含在 C++11 中的特殊函式:橢圓積分、指數積分、拉蓋爾多項式、勒讓德多項式、埃爾米特多項式、貝塞爾函式、諾伊曼函式、Beta 函式和黎曼 Zeta 函式。本標準已合併到 C++17 中。
[編輯] C++11 階段
- 2011 年:C++11 (ISO/IEC 14882:2011) (ISO 商店) (2012 年釋出後草案)。
引入了大量更改,旨在標準化現有實踐並改進 C++ 程式設計師可用的抽象。
本 TR 實現了 IEEE 754-2008 浮點算術標準中的十進位制浮點型別:std::decimal::decimal32
、std::decimal::decimal64
和 std::decimal::decimal128
。
- 2012 年:標準 C++ 基金會成立
- 2013 年:The C++ Programming Language,第 4 版
[編輯] C++14 階段
- 2014 年:C++14 (ISO 商店) (ANSI 商店) (2014 年最終草案)
C++ 標準的次要修訂
本 TS 是一個實驗性 C++ 庫擴充套件,指定了一個基於 boost.filesystem V3 的檔案系統庫(帶有一些修改和擴充套件)。本 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 的幾個擴充套件、latch 和 barrier,以及原子智慧指標。
[編輯] C++17 階段
- 2017 年:C++17 (ISO 商店) (ANSI 商店) (n4659 2017-03-21 最終草案)
C++11 之後 C++ 標準的主要修訂版
本 TS 擴充套件了 C++ 庫,以包含範圍,一種新的、更強大的抽象,用於替換迭代器對,以及範圍檢視、哨兵範圍、用於即時轉換的投影、新的迭代器介面卡和演算法。此擴充套件最終使得使用 sort(v); 對向量進行排序成為可能。
本 TS 擴充套件了 C++ 核心語言和標準庫,以包含無棧協程(可恢復函式)。這添加了關鍵字 co_await、co_yield 和 co_return。
本 TS 擴充套件了 C++ 庫,以包含基於 boost.asio 的 TCP/IP 網路功能。
本 TS 擴充套件了 C++ 核心語言,以包含模組。這添加了特殊識別符號 module、import,並重新引入了具有新含義的關鍵字 export。
本 TS 擴充套件了 C++ 庫,以包含兩種新的執行策略(unseq 和 vec)、額外的並行演算法(例如 reduction_plus 或 for_loop_strided)、用於分叉和連線並行任務的任務塊、SIMD 型別以及對這些型別的操作。
[編輯] C++20 階段
- 2020 年:C++20 (ISO 商店) (最終草案 n4860 2020-03-31)
C++17 之後 C++ 標準的主要修訂版
本 TS 擴充套件了 C++,提供了檢查程式實體(如變數、列舉、類及其成員、lambda 及其捕獲等)的功能。
[編輯] 未來發展
- 實驗性技術規範
- 2026 年:C++ 最新草案 n5001 (2024-12-17)
C++ 標準的下一個主要修訂版
[編輯] 另請參閱
C 文件 用於 C 歷史
|
[編輯] 外部連結
1. | C++ 歷史:1979-1991 |
2. | 在真實世界中演進語言:C++ 1991-2006 |
3. | 在擁擠和變化的世界中茁壯成長:C++ 2006-2020 |
4. | 標準 C++ 基金會 |
5. | 維基百科上的 C++ |
6. | C++ 標準委員會 |