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 ) 、调用函数与返回函数(同步特性,C++中不存在)
  2. 库:并发任务库(C++中不存在)
  • 1982年:C with Classes参考手册发布
  • 1984年:C84实现,参考手册发布
  • 1985年:Cfront 1.0
  1. 新增特性: 虚函数 、函数与 运算符重载 引用 new delete 运算符、 关键字 const 、作用域解析运算符
  2. 标准库新增: 复数 string (AT&T版本)、 I/O流
  • 1985年:《C++程序设计语言》第一版
  • 1986年:记录剩余设计目标的"whatis?"论文,包括多重继承、异常处理和模板
  • 1987年:GCC 1.15.3支持C++
  • 1989年:Cfront 2.0
  1. 新增特性: 多重继承 成员指针 受保护访问 、类型安全链接、 抽象类 static const限定 成员函数、类专属 new delete
  2. 标准库新增: I/O操纵器
  • 1990: 《带注释的C++参考手册》

本书描述了该语言的设计形态,包含了一些尚未实现的功能特性。在ISO标准发布前,它一直是事实上的行业标准。

  1. 新增特性: 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)
  1. 新特性:RTTI( dynamic_cast typeid )、 协变返回类型 转换运算符 mutable bool 、条件中的声明、 模板实例化 成员模板 、export
  2. 标准库新增: 本地化 bitset valarray auto_ptr 模板化字符串 I/O流 以及 复数
  3. 基于STL: 容器 算法 迭代器 函数对象
  • 1998年:《C++程序设计语言》第三版
  • 1999年: Boost 由委员会成员创立,旨在为C++标准提供高质量候选库
  • 2003年: C++03 (ISO/IEC 14882:2003)

这是一个小规模修订,旨在成为技术勘误。本次修订引入了 value initialization 的定义。

C++03 中已修复的缺陷报告(92 项核心,125 项库)

本技术报告讨论了各种C++抽象的成本,提供了实现指南,探讨了C++在嵌入式系统中的应用,并介绍了与C语言ISO/IEC TR 18037:2008标准中 <iohw.h> 对应的 <hardware> 接口。

本技术报告是一个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() 函数族,以及 C99 为 printf() scanf() 函数族新增的转换说明符。

除特殊函数外,TR1的全部内容均被纳入C++11标准,仅存在细微改动。

该国际标准是C++标准库的扩展,补充了TR1中包含但未纳入C++11的特殊函数:椭圆积分、指数积分、拉盖尔多项式、勒让德多项式、埃尔米特多项式、贝塞尔函数、诺伊曼函数、贝塔函数和黎曼ζ函数。此标准已 并入C++17

C++11 时期

主条目:C++11

大量变更被引入,既为了标准化现有实践,也为了提升C++程序员可用的抽象能力

本技术报告实现了IEEE 754-2008浮点算术标准中的十进制浮点类型: std::decimal::decimal32 std::decimal::decimal64 以及 std::decimal::decimal128

C++14 时期

主条目: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 时期

主条目:C++17

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 时期

主条目:C++20

C++17之后的主要标准修订版本

本技术规范扩展了C++的功能,提供了检查程序实体的能力,例如变量、枚举、类及其成员、lambda表达式及其捕获等。

未来发展

主条目:C++23

C++ 标准的下一个主要修订版本

另请参阅

C 文档 关于 C 语言历史

外部链接

1. C++发展史:1979-1991
2. 面向现实世界演进的语言:C++ 1991-2006
3. 在拥挤与变革中蓬勃发展:C++ 2006-2020
4. 标准C++基金会
5. 维基百科上的C++
6. C++标准委员会