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++ 标准委员会 |