实验性 C++ 特性

来自cppreference.com
< cpp


C++ 标准委员会为未来的标准化出版实验性 C++ 语言与库扩展。

注意:2012 之前,这些出版使用 TR(技术报告)格式。从 2012 起,ISO 手续改为使用 TS(技术规范)格式。

TR/TS 规范

ISO 编号 名称 状态 链接,头文件
ISO/IEC TR 18015:2006 C++ 性能技术报告 出版于 2006(ISO 商店
草案:TR18015 (2006-02-15)。
ISO/IEC TR 19768:2007 C++ 库扩展技术报告 出版于 2007-11-15(ISO 商店
草案: n1836 (2005-06-24)。

分离到 ISO 29124,剩下的并入 C++11。

ISO/IEC 29124:2010 支持数学特殊函数的 C++ 库扩展 出版于 2010-09-03(ISO 商店
最终草案: n3060 (2010-03-06)。

并入 C++17

特殊函数
ISO/IEC TR 24733:2011 支持十进制浮点算术的编程语言 C++ 扩展 出版于 2011-10-25(ISO 商店)。草案:N2849 (2009-03-06)。

可能会为将来的 TS 所取代或并入未来的 C++ 修订版(最近的合并提案为 N3871)。

ISO/IEC TS 18822:2015 C++ 文件系统技术规范 出版于 2015-06-18(ISO 商店)。最终草案:N4100 (2014-07-04)。

并入 C++17

文件系统<filesystem>
ISO/IEC TS 19570:2015 并行的 C++ 扩展 出版于 2015-06-24(ISO 商店)。最终草案:N4507 (2015-05-05)。

并入 C++17。

并行
ISO/IEC TS 19841:2015 事务性内存 TS 出版于 2015-09-16(ISO 商店)。最终草案:N4514 (2015-05-08)。 事务性内存
ISO/IEC TS 19568:2015 库基础的 C++ 扩展 出版于 2015-09-30(ISO 商店)。最终草案:N4480 (2015-04-07)。

并入 C++17,除了调用特征。

库扩展
ISO/IEC TS 19217:2015 概念的 C++ 扩展 出版于 2015-11-13(商店)。最终草案:N4553 (2015-10-02) 当前草案:P0734R0 (2017-07-14)。

并入 C++20(有修改)。

约束与概念<concepts>
ISO/IEC TS 19571:2016 并发的 C++ 扩展 出版于 2016-01-19(ISO 商店)。最终草案:P0159R0 (2015-10-22)。

部分并入 C++20。

并发
ISO/IEC TS 19568:2017 库基础的 C++ 扩展,版本 2 出版于 2017-03-30(ISO 商店)。草案:N4617 (2016-11-28)。

部分并入 C++17 与 C++20。

库扩展 2
ISO/IEC TS 21425:2017 范围 TS 出版于 2017-12-05(ISO 商店)。草案:N4685 (2017-07-31)。

并入 C++20

范围<ranges>
ISO/IEC TS 22277:2017 协程 TS 出版于 2017-12-05(ISO 商店)。草案:N4736 (2018-03-31),最新草案:N4775 (2018-10-07)。

并入 C++20

<coroutine>
ISO/IEC TS 19216:2018 网络 TS 出版于 2018-04-24(ISO 商店)。草案:N4734 (2017-04-04) 。最新草案 N4771 (2018-10-08)。
参阅非 TS 提案
  • 标准安全网络功能——P2586R0 (2022-09-13)
  • 网络功能的发送器-接收器接口——P2762R2 (2023-10-12)
网络
ISO/IEC TS 21544:2018 模块 TS 出版于 2018-05-16(ISO 商店)。最终草案:N4720 (2018-01-29)。

并入 C++20(有修改)。

ISO/IEC TS 19570:2018 并行 TS 版本 2 出版于 2018-11-15(ISO 商店)。最终草案:N4793 (2018-11-26)。发布后草案:N4808 (2019-03-11)。另见下文非 TS 的 std::simd 提案。 并行 2
ISO/IEC TS 23619 反射 TS 出版于 2021-10-11(ISO 商店)。草案:N4856 (2020-03-02)。另见下文非 TS 提案。。 反射
数值 早期开发。草案 P1889R1 (2019-12-27)。
ISO/IEC DTS 9922 并发 TS 版本 2 早期开发。草案:N4956 (2023-07-05)。 并发 2
ISO/IEC DTS 19568 库基础的 C++ 扩展,版本 3 早期开发。草案:N4948 (2023-05-08)。 库扩展 3
ISO/IEC DTS 12907 事务性内存 TS,版本 2 早期开发。草案:N4923 (2022-10-14)。
ISO/IEC NP 19569 数组扩展 TS ×已撤销。废弃草案:N3820 (2013-10-10)。

非 TS 提案

名称 状态 链接,头文件
线性代数 已合并入 C++26。提案:P1673R13 (2023-11-10)。
更多提案:
  • 为 C++ 标准库添加线性代数支持的提案——P1385R7 (2022-10-15)
  • BLAS 发展一个标准 C++ 线性代数库——P1674R2 (2022-05-15)
  • Issaquah 2023 会议上面向 LEWG 的 P1385R7 演示——P2802R0 (2023-02-09)
  • 修正 C++26:优化非复数值类型的 linalg::conjugated——P3050R2 (2024-08-13)
  • 修正 C++26:使对称厄米特的秩-k 与秩-2k 更新与 BLAS 一致——P3371R0 (2024-08-12)
<linalg>
std::execution 已转交 LWG,措辞中。

已合并入 C++26。提案:P2300R10 (2024-06-28)。

更多提案:
  • 系统执行上下文——P2079R4 (2024-05-22)
  • 网络发送器-接收器接口——P2762R2 (2023-10-12)
  • 发送器和接收器的成员定制点——P2855R1 (2024-02-22)
  • C++ 执行器的事件模型——P2882R0 (2023-05-11)
  • 发送器算法的定制化——P2999R3 (2023-12-13)
  • std::execution 介绍——P3090R0 (2024-02-14)
  • C++26 的 std::execution 推进计划——P3109R0 (2024-02-12)
  • 重新考虑 std::execution::on 算法——P3175R3 (2024-06-25)
  • 发送器适配器 finallywrite_envunstoppable——P3284R1 (2024-07-16)
  • 修复惰性发送器算法的定制化——P3303R1 (2024-06-25)
  • 用于创建执行环境的工具——P3325R3 (2024-07-23)
执行<execution>
std::inplace_vector 已合并入 C++26。提案:P0843R14 (2024-06-26)。
更多提案:
  • inplace_vector——P0843R7)LEWG 演示——P2925R0 (2023-06-16)
  • 向量的一种方向——P3147R1 (2024-03-18)
  • 一种知分配器的 std::inplace_vector——P3160R1 (2024-03-09)
<inplace_vector>
模式匹配 早期开发。草案 P1371R3 (2020-09-15)。
更多提案:
  • 使用 isas 的模式匹配——P2392R2 (2022-09-24)
  • 模式匹配:match 表达式——P2688R1 (2024-02-15)
  • switch 用于模式匹配——P2940R0 (2022-04-18)
  • 用于模式匹配的标识符——P2941R0 (2022-02-24)
  • 后条件是一种模式匹配——P3210R1 (2024-04-20)
  • 用于引入新名字的模式匹配和契约的统一语法——P3249R0 (2024-05-22)
  • 一种更简单的模式匹配写法——P3332R0 (2024-06-18)
反射 主文档 (ISO/IEC TS 23619:2021) 在上文反射 TS中说明。
更多提案:
  • 可缩放的 C++ 反射——P1240R2 (2022-01-14)
  • 展开语句——P1306R2 (2024-05-07)
  • 属性的反射——P1887R1 (2020-01-13)
  • 元编程——P2237R0 (2020-10-15)
  • 带有基于值的反射的 Python 绑定——P2911R1 (2023-10-13)
  • C++26 的反射——P2996R5 (2024-08-14)
  • 在 JS 绑定生成中用反射取代元语言——P3010R0 (2023-10-13)
  • 以反射进行 ABI 比较——P3095R0 (2024-02-15)
  • C++26 反射中的函数形参反射——P3096R2 (2024-07-16)
  • 反射的生成式扩展——P3157R1 (2024-05-22)
反射
std::simd 主文档 (TS ISO/IEC 19570:2018) 在上文“C++ 并行计算扩展 V2”中描述。
更多提案:
数据并行类型
契约 早期开发。提案 P2659R2 (2022-11-30)。草案 P2660R0 (2022-10-14)。
更多提案:
  • 出版契约技术规范的提案——P2659R2 (2022-12-05)
  • 契约 TS 的杂项订正——P2661R0 (2022-10-15)
  • C++ 契约:优先应对安全性——P2680R1 (2022-12-15)
  • C++ 契约的建议计划——P2695R1 (2023-02-09)
  • 以条件为中心的契约语法提案——P2737R0 (2022-12-30)
  • C++ 契约:优先应对安全性——演示幻灯片——P2743R0 (2022-12-13)
  • 受检查契约的求值——P2751R1 (2023-02-14)
  • 完整契约设施的大胆计划——P2755R1 (2024-04-11)
  • 契约 MVP 背后的想法——P2817R0 (2023-03-05)
  • 支持‘定义时 const’风格契约的提案——P2829R0 (2023-04-13)
  • 契约 MVP 的契约违例处理语义——P2852R0 (2023-04-24)
  • Lakos 规则:窄契约与 noexcept 天生不兼容——P2861R0 (2023-05-19)
  • 对契约语法的需求——P2885R3 (2023-10-05)
  • lambda 上的契约——P2890R2 (2023-12-13)
  • 契约的常量求值——P2894R2 (2024-01-11)
  • 契约 MVP 的突出设计问题——P2896R0 (2023-08-22)
  • C++ 契约——P2900R8 (2024-07-26)
  • 应对契约的开放设计问题的原则性方法——P2932R3 (2024-01-16)
  • 契约的属性式语法——P2935R4 (2023-11-05)
  • 契约必须避免泄露敏感信息——P2947R0 (2023-07-20)
  • P2861R0 的幻灯片:窄契约与 noexcept 天生不兼容——P2949R0 (2023-07-14)
  • 契约 MVP 的契约与虚函数——P2954R0 (2023-08-03)
  • 契约与协程——P2957R1 (2024-01-13)
  • 契约的自然语法——P2961R2 (2023-11-08)
  • 契约语法选择概述——P3028R0 (2023-11-05)
  • 保护契约不发生改动——P3071R1 (2023-12-17)
  • 契约 MVP 中移除 evaluation_undefined_behaviorwill_continue——P3073R0 (2024-01-27)
  • 契约的常量求值中应当存在 ignoreobserve 吗?——P3079R0 (2024-01-11)
  • C++ 契约:支持虚函数——P3097R0 (2024-04-15)
  • 未定义和错误行为就是契约违例——P3100R0 (2024-05-21)
  • 契约的东京会议技术修正——P3119R1 (2024-05-09)
  • 契约 MVP 的虚函数契约——P3165R0 (2024-02-27)
  • 契约继承——P3169R0 (2024-04-14)
  • 契约的测试支持——P3183R1 (2024-05-22)
  • P2900R6 LEWG 演示的幻灯片:C++ 契约——P3189R0 (2024-03-19)
  • P2900R7 LEWG 演示的幻灯片:C++ 契约——P3190R0 (2024-03-20)
  • 对契约 MVP (P2900R6) 东京会议 EWG 投票调查的回应——P3197R0 (2024-04-12)
  • 东京会议的契约 MVP LEWG 会议纪要——P3198R0 (2024-03-29)
  • C++ 契约:Louis 语义的命名——P3226R0 (2024-04-12)
  • C++ 契约:再论契约检查的消除与重复——P3228R1 (2024-05-21)
  • 一种命名契约语义的替代方案——P3238R0 (2024-05-06)
  • 用于引入新名字的模式匹配和契约的统一语法——P3249R0 (2024-05-22)
  • C++ 契约与函数指针——P3250R0 (2024-05-07)
  • C++ 契约与协程——P3251R0 (2024-05-07)
  • 使 contract_assert 的谓词更正规——P3257R0 (2024-04-26)
  • 以 TS 方式发布契约——P3265R3 (2024-05-28)
  • 通往 C++ 契约——P3267R1 (2024-05-22)
  • C++ 契约的常量化挑战,关注当前代码——P3268R0 (2024-05-07)
  • 不要以 TS 方式发布契约——P3269R0 (2024-05-21)
  • contract_assert 的重复、消除与常量化——P3270R0 (2024-05-22)
  • 函数用法类型(函数指针的契约)——P3271R0 (2024-05-20)
  • P2900 优于契约 TS——P3276R0 (2024-05-18)
  • 契约:对保护器的保护——P3285R0 (2024-05-15)
  • 集成既存断言与契约——P3290R1 (2024-07-12)
  • C++26 需要契约检查——P3297R1 (2024-06-21)
  • 一种在 C++ 契约中集成传统断言设施的非强制方案——P3311R0 (2024-05-22)
  • 编译时解析的契约——P3317R0 (2024-05-22)
  • sort() 的契约——P3212R0 (2024-07-03)
  • 契约与工具的交互——P3321R0 (2024-07-12)
  • 契约评估过程中的可观察检查点——P3328R0 (2024-06-14)
  • BDE 的契约使用体验——P3336R0 (2024-06-23)
  • 契约——我们所为何事(EWG 演示)——P3343R0 (2024-06-25)
  • 虚函数的契约(EWG - P3097 的演示)——P3344R0 (2024-06-28)
  • 类不变式与契约检查哲学——P3361R1 (2024-07-23)
  • 静态分析与契约“安全”,P2900 vs P2680/P3285——P3362R0 (2024-08-13)
2D 图形 早期开发。草案 P0267R10 (2019-10-07)。
图形库 早期开发。
更多提案:
  • 图形库:概述——P3126R2 (2024-08-05)
  • 图形库:图形容器接口——P3130R2 (2024-08-05)
  • 图形库:图形容器——P3131R2 (2024-08-05)

参阅

外部链接

1.  PL22.16/WG21 文档列表 - 2016-2024 年间 C++ 委员会的全部文档(TS/提案)。
2.  JTC1/SC22/WG21 2024 年度提案(通讯)