C++ 历史
内容 |
[编辑] 早期 C++
- 1979 年:C with Classes 首次实现
- 新特性:类,成员函数,派生类,独立编译,公有和私有访问控制,友元,函数参数类型检查,默认参数,内联函数,重载的赋值运算符,构造函数,析构函数,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)
这是一个小幅修订,目的是进行技术勘误。此修订引入了值初始化的定义。
本技术规范讨论了各种 C++ 抽象的成本,提供了实现指南,讨论了 C++ 在嵌入式系统中的使用,并引入了 C 的 ISO/IEC TR 18037:2008 <iohw.h>
的 <hardware>
接口。
本技术规范是对 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 中未包含的特殊函数:椭圆积分、指数积分、拉盖尔多项式、勒让德多项式、厄米特多项式、贝塞尔函数、诺伊曼函数、贝塔函数和黎曼 Zeta 函数。该标准已合并到 C++17 中。
[编辑] C++11 时期
- 2011 年:C++11 (ISO/IEC 14882:2011) (ISO 商店) (2012 年出版后草案)
对 C++ 编程人员进行了大量的更改,以标准化现有的实践并改进可用的抽象。
本技术规范实现了 IEEE 754-2008 浮点运算标准中的十进制浮点类型:std::decimal::decimal32
、std::decimal::decimal64
和 std::decimal::decimal128
。
- 2012 年:标准 C++ 基金会 成立
- 2013 年:《C++ 编程语言》第四版
[编辑] C++14 时期
- 2014 年:C++14 (ISO 商店) (ANSI 商店) (2014 年最终草案)
对 C++ 标准进行了小幅修订。
本技术规范是一个实验性的 C++ 库扩展,它指定了一个基于 boost.filesystem V3 的文件系统库(带有一些修改和扩展)。该技术规范已合并到 C++17 中。
本技术规范标准化了所有标准库算法的并行和矢量并行 API,还添加了新的算法,如 reduce
、transform_reduce
或 exclusive_scan
。该技术规范已合并到 C++17 中。
本技术规范使用同步和原子块扩展了 C++ 核心语言,以及实现事务性内存语义的事务安全函数。
本技术规范向 C++ 标准库添加了几个新组件:optional、any、string_view、sample、search、apply、多态分配器 以及用于类型特征的可变模板。该技术规范已合并到 C++17 中。
本技术规范使用概念(命名类型要求)和约束(模板、函数和变量声明中允许的类型的限制)扩展了 C++ 核心语言,这有助于元编程并简化模板实例化诊断,请参见 概念。该技术规范已合并到 C++20 中,但有一些遗漏。
本技术规范扩展了 C++ 库,其中包括对 std::future、闩锁 和 屏障 以及原子智能指针的几个扩展。
[编辑] 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 类型以及这些类型上的操作。
[edit] C++20 时期
- 2020 年:C++20 (ISO 存储) (最终草案 n4860 2020-03-31)
继 C++17 之后对 C++ 标准进行的主要修订
此 TS 使用设施扩展了 C++,以检查程序实体,例如变量、枚举、类及其成员、lambda 及其捕获等。
[edit] 未来发展
- 实验性技术规范
- 2026 年:C++ 最新草案 n4993 (2024-10-16)
对 C++ 标准进行的下一个主要修订
[edit] 另请参见
C 文档 用于 C 的历史
|
[edit] 外部链接
C++ 的历史:1979-1991 | |
在现实世界中为现实世界发展语言:C++ 1991-2006 | |
在一个拥挤而不断变化的世界中蓬勃发展:C++ 2006-2020 | |
标准 C++ 基金会 | |
维基百科上的 C++ | |
C++ 标准委员会 |