History of C++
目录 |
早期 C++
- 1979年:首次实现C with Classes
- 新特性: classes 、 member functions 、 derived classes 、独立编译、 public and private access control 、 friends 、函数参数类型检查、 default arguments 、 inline functions 、 overloaded assignment operator 、 constructors 、 destructors 、 f ( ) 等同于 f ( void ) 、调用函数与返回函数(同步特性,C++中不存在)
- 库:并发任务库(C++中不存在)
- 1982年:C with Classes参考手册发布
- 1984年:C84实现,参考手册发布
- 1985年:Cfront 1.0
- 1985年:《C++程序设计语言》第一版
- 1986年:记录剩余设计目标的"whatis?"论文,包括多重继承、异常处理和模板
- 1987年:GCC 1.15.3支持C++
- 1989年:Cfront 2.0
- 1990: 《带注释的C++参考手册》
本书描述了该语言的设计形态,包含了一些尚未实现的功能特性。在ISO标准发布前,它一直是事实上的行业标准。
- 新增特性: namespaces , exception handling , nested classes , templates
- 1991: Cfront 3.0
- 1991: 《C++程序设计语言》第二版
标准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年:《C++程序设计语言》第三版
- 1999年: Boost 由委员会成员创立,旨在为C++标准提供高质量候选库
- 2003年: C++03 (ISO/IEC 14882:2003)
这是一个小规模修订,旨在成为技术勘误。本次修订引入了 value initialization 的定义。
本技术报告讨论了各种C++抽象的成本,提供了实现指南,探讨了C++在嵌入式系统中的应用,并介绍了与C语言ISO/IEC TR 18037:2008标准中
<iohw.h>
对应的
<hardware>
接口。
本技术报告是一个C++库扩展,为C++标准库新增以下内容:
- 来自 Boost: reference_wrapper , 智能指针 , 成员函数 , result_of , bind , function , 类型特征 , 随机数 ,数学特殊函数, tuple , array , 无序容器 (包括 hash ),以及 正则表达式 。
-
来自 C99:
<math.h>中 C99 新增的数学函数, 空白字符分类 , 浮点环境 , hexfloat I/O 操纵符, 固定大小整数类型 ,long long类型, va_copy , snprintf() 和 vfscanf() 函数族,以及 C99 为 printf() 和 scanf() 函数族新增的转换说明符。
除特殊函数外,TR1的全部内容均被纳入C++11标准,仅存在细微改动。
该国际标准是C++标准库的扩展,补充了TR1中包含但未纳入C++11的特殊函数:椭圆积分、指数积分、拉盖尔多项式、勒让德多项式、埃尔米特多项式、贝塞尔函数、诺伊曼函数、贝塔函数和黎曼ζ函数。此标准已 并入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年: The Standard C++ Foundation 成立
- 2013年:《C++程序设计语言》第四版
C++14 时期
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++核心语言,这有助于元编程并简化模板实例化诊断,参见 concepts 。该技术规范已并入C++20标准,但存在部分删减。
本技术规范扩展了C++标准库,包含了对 若干扩展功能 的支持,包括对 std::future 、 latches 和 barriers 的增强,以及原子智能指针。
C++17 时期
- 2017年: C++17 ( ISO官方商店 )( ANSI官方商店 )( n4659 2017-03-21 最终草案 )
C++11之后的主要标准修订
本技术规范扩展了C++标准库,引入了 ranges 这一全新且更强大的抽象概念以替代迭代器对,同时包含范围视图、哨兵范围、用于实时转换的投影机制、新型迭代器适配器及算法。该扩展最终使得通过 sort ( v ) ; 对向量进行排序成为可能。
本技术规范扩展了C++核心语言及标准库,以包含无栈协程(可恢复函数)。新增了关键字 co_await 、 co_yield 和 co_return 。
本技术规范(TS)扩展了C++标准库,基于 boost.asio 实现了TCP/IP网络功能。
本技术规范(TS)扩展了C++核心语言以包含模块功能。这新增了特殊标识符 module 、 import ,并以新的含义重新引入了关键字 export 。
本技术规范扩展了C++标准库,新增两种执行策略( unseq 与 vec )、新增并行算法如 reduction_plus 或 for_loop_strided 、用于分叉与合并并行任务的任务块机制,以及SIMD类型及其相关操作。
C++20 时期
- 2020年: C++20 ( ISO商店 ) (最终草案 n4860 2020-03-31 )
C++17之后的主要标准修订版本
本技术规范扩展了C++的功能,提供了检查程序实体的能力,例如变量、枚举、类及其成员、lambda表达式及其捕获等。
未来发展
- 实验性技术规范
- 2026: C++ 最新草案 n5008 (2025-03-15)
C++ 标准的下一个主要修订版本
另请参阅
|
C 文档
关于
C 语言历史
|
外部链接
| 1. | C++发展史:1979-1991 |
| 2. | 面向现实世界演进的语言:C++ 1991-2006 |
| 3. | 在拥挤与变革中蓬勃发展:C++ 2006-2020 |
| 4. | 标准C++基金会 |
| 5. | 维基百科上的C++ |
| 6. | C++标准委员会 |