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. 新特性: 成员函数 派生类 、独立编译、 公有与私有访问控制 友元 、函数参数类型检查、 默认参数 内联函数 重载赋值运算符 构造函数 析构函数 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. 新特性: 多重继承 成员指针 受保护访问 、类型安全链接、 抽象类 静态 const限定 成员函数、类专属的 new delete
  2. 库新增: I/O操纵器
  • 1990年:《C++参考手册注解版》

本书描述了该语言的设计规范,包含了一些当时尚未实现的功能特性。在ISO标准发布之前,它一直发挥着事实标准的作用。

  1. 新特性: 命名空间 异常处理 嵌套类 模板
  • 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)

这是一个小幅修订,旨在成为技术勘误。本次修订引入了 值初始化 的定义。

C++03 中已修复的缺陷报告(92 项核心,125 项库)
<div class="div-col columns column-count column-count-6" style="-moz-column-count: 6; -webkit-column-count:

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

本技术报告(TR)是一个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++ 核心语言,引入了概念(具名类型要求)与约束(对模板、函数及变量声明中允许类型的限制),这有助于元编程并简化模板实例化诊断,参见 概念 。该技术规范已并入 C++20 标准,但存在部分内容缺失。

此技术规范扩展了C++标准库,包含对 std::future latch barrier 若干扩展 ,以及原子智能指针。

C++17 时期

主条目:C++17

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

此技术规范扩展了C++标准库,引入了 范围 这一全新且更强大的抽象概念,用于替代迭代器对,同时包含范围视图、哨兵范围、用于即时变换的投影机制,以及新的迭代器适配器和算法。该扩展最终使得通过 sort ( v ) ; 对向量进行排序成为可能。

此技术规范扩展了C++核心语言及标准库,引入了无栈协程(可恢复函数)。新增关键字包括 co_await co_yield co_return

此技术规范扩展了 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++标准修订版本

此 TS 扩展了 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++标准委员会