实验性 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)
  • 关于 C++ 标准网络的基于 IETF TAPS 提案方向——P3185R0 (2024-12-14)
  • 用于基于 TAPS 网络连接的提案 API——P3482R0 (2024-12-14)
网络
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 TS 9922 并发 TS 版本 2 出版于 2024-10-09(ISO 商店)。草案:N4956 (2023-07-05)。 并发 2
ISO/IEC TS 19568:2024 库基础的 C++ 扩展,版本 3 出版于 2024-08-26(ISO 商店)。草案: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——P3050R3 (2024-10-29)
  • 修正 C++26:使对称厄米特的秩-k 与秩-2k 更新与 BLAS 一致——P3371R4 (2025-04-07)
<linalg>
std::execution 已合并入 C++26。提案:P2300R10 (2024-06-28)。
更多提案:
  • 系统执行上下文——P2079R7 (2025-02-12)
  • 网络发送器-接收器接口——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)
  • 改进发送器表达式的诊断——P3164R3 (2025-01-10)
  • 重新考虑 std::execution::on 算法——P3175R3 (2024-06-25)
  • 用于完成行为的发送器查询——P3206R0 (2025-01-13)
  • 发送器适配器 finallywrite_envunstoppable——P3284R3 (2025-02-13)
  • 修复惰性发送器算法的定制化——P3303R1 (2024-06-25)
  • 用于创建执行环境的工具——P3325R5 (2024-11-22)
  • 何时可知 connect 不会抛异常?——P3388R2 (2025-04-01)
  • std::execution 措辞修订——P3396R1 (2024-11-19)
  • 使能更高效的基于停止令牌的发送器取消——P3409R1 (2024-11-17)
  • Win32、Darwin 和 Linux 上的 system_scheduler——P3456R0 (2024-10-15)
  • std::execution::bulk() 问题总结——P3481R3 (2025-04-16)
  • 采用 constexpr 异常的高质量发送器诊断——P3557R1 (2025-02-13)
  • 发送器-接收器中的 optional variant——P3570R0 (2025-02-10)
  • std::execution 的非阻塞支持——P3669R0 (2025-04-15)
执行 (实验性),
Execution,
<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——P3160R2 (2024-10-15)
<inplace_vector>
experimental::simd
std::simd
已并入 C++26。提案:P1928R15 (2024-11-22).
主文档 (TS ISO/IEC 19570:2018) 在上文“C++ 并行计算扩展 V2”中描述。
更多提案:
数据并行类型 (实验性),
数据并行类型,
<simd>
契约 已合并入 C++26。提案:C++ 契约 - P2900R14 (2025-02-13)。
更多提案:
  • 出版契约技术规范的提案——P2659R2 (2022-11-30)
  • 提案契约 TS - P2660R0 (2022-10-14)
  • 契约 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++ 契约:原理——P2899R1 (2025-03-14)
  • C++ 契约——P2900R13 (2025-01-13)
  • 应对契约的开放设计问题的原则性方法——P2932R3 (2024-01-16)
  • 契约的属性式语法——P2935R4 (2023-11-05)
  • 契约必须避免泄露敏感信息——P2947R0 (2023-07-20)
  • P2861R0 的幻灯片:窄契约与 noexcept 天生不兼容——P2949R0 (2023-07-14)
  • 契约 MVP 的契约与虚函数——P2954R0 (2023-08-03)
  • 契约与协程——P2957R2 (2024-10-14)
  • 契约的自然语法——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)
  • C++ 契约:后条件捕捉——P3098R1 (2024-12-11)
  • 未定义和错误行为就是契约违例——P3100R1 (2024-10-16)
  • 契约的东京会议技术修正——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)
  • 为何契约?——P3204R0 (2024-11-07)
  • sort() 的契约——P3212R0 (2024-07-03)
  • C++ 契约:Louis 语义的命名——P3226R0 (2024-04-12)
  • C++ 契约:修正契约违例处理 API——P3227R1 (2024-10-24)
  • C++ 契约:再论契约检查的消除与重复——P3228R1 (2024-05-21)
  • 令错误行为与契约兼容——P3229R1 (2025-02-10)
  • 一种命名契约语义的替代方案——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)
  • 函数用法类型(函数指针的契约)——P3271R1 (2024-10-15)
  • P2900 优于契约 TS——P3276R0 (2024-05-18)
  • 契约:对保护器的保护——P3285R0 (2024-05-15)
  • 集成既存断言与契约——P3290R2 (2024-09-06)
  • C++26 需要契约检查——P3297R1 (2024-06-21)
  • 一种在 C++ 契约中集成传统断言设施的非强制方案——P3311R0 (2024-05-22)
  • 编译时解析的契约——P3317R0 (2024-05-22)
  • 契约与工具的交互——P3321R0 (2024-07-12)
  • 函数指针的契约断言——P3327R0 (2024-10-16)
  • 契约评估过程中的可观察检查点——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)
  • 契约断言 vs. 静态分析和“安全性”——P3376R0 (2024-10-14)
  • 以 P2900 进行契约的静态分析——P3386R1 (2024-11-25)
  • 协程的契约断言——P3387R0 (2024-10-09)
  • 用标签规定契约断言的属性——P3400R1 (2025-02-28)
  • 改进对契约断言中抛出异常的处理——P3417R1 (2025-03-05)
  • 契约实现方报告——P3460R0 (2024-10-16)
  • 标准库的加固——P3471R4 (2025-02-14)
  • const 化不应当是 MVP(最小可行产品)的内容——P3478R0 (2024-10-16)
  • 探索严格契约谓词——P3499R1 (2025-02-09)
  • 契约是否 'safe'?——P3500R1 (2025-02-09)
  • P2900R11 的幻灯片——C++ 契约——P3502R0 (2024-11-18)
  • P2900 对 C++26 仍未就绪——P3506R0 (2025-01-13)
  • 违例处理器与 noexcept 对比——P3541R1 (2025-01-07)
  • 核心语言缺省契约——P3558R1 (2025-02-03)
  • 契约的关注事项——P3573R0 (2025-01-12)
  • 要求无抛出的缺省契约违例处理函数——P3577R0 (2025-01-12)
  • 观察到契约违例?跳过后续断言!——P3582R0 (2025-01-13)
  • 契约、类型与函数——P3583R0 (2025-01-13)
  • 契约要点问题的语境背景——P3591R0 (2025-02-03)
  • 隐式契约断言的初始部分——P3599R0 (2025-02-03)
  • 契约与剖面配置:C++26 应当合理提供什么——P3608R0 (2025-02-01)
  • 现在应当移除虚函数的契约——P3616R0 (2025-02-08)
  • 使契约默认是可靠的——P3640R0 (2025-03-17)
契约断言
函数契约说明符
contract_assert
prepost
<contracts>
模式匹配 早期开发。草案 P1371R3 (2020-09-15)。
更多提案:
  • 使用 isas 的模式匹配——P2392R3 (2024-10-16)
  • 模式匹配:match 表达式——P2688R5 (2025-01-13)
  • switch 用于模式匹配——P2940R0 (2022-04-18)
  • 用于模式匹配的标识符——P2941R0 (2022-02-24)
  • 后条件是一种模式匹配——P3210R2 (2024-09-10)
  • 用于引入新名字的模式匹配和契约的统一语法——P3249R0 (2024-05-22)
  • 一种更简单的模式匹配写法——P3332R0 (2024-06-18)
  • P2688R2 演示——模式匹配:match 表达式——P3476R0 (2024-10-16)
  • 模式匹配:开放和类型的定制化点——P3521R0 (2024-12-17)
  • 模式匹配:*变体式* 与 'std::expected'——P3527R1 (2025-01-13)
  • 模式匹配——P3572R0 (2025-01-12)
反射 主文档 (ISO/IEC TS 23619:2021) 在上文反射 TS中说明。
更多提案:
  • 可缩放的 C++ 反射——P1240R2 (2022-01-14)
  • 展开语句——P1306R3 (2024-10-14)
  • 属性的反射——P1887R1 (2020-01-13)
  • 元编程——P2237R0 (2020-10-15)
  • 带有基于值的反射的 Python 绑定——P2911R1 (2023-10-13)
  • C++26 的反射——P2996R11 (2025-04-16)
  • 在 JS 绑定生成中用反射取代元语言——P3010R0 (2023-10-13)
  • 以反射进行 ABI 比较——P3095R0 (2024-02-15)
  • C++26 反射中的函数形参反射——P3096R8 (2025-04-14)
  • 反射的生成式扩展——P3157R1 (2024-05-22)
  • 反射语法——P3381R0 (2024-09-17)
  • 属性的反射——P3385R4 (2025-03-11)
  • 用于反射的标注——P3394R2 (2025-03-14)
  • 反射语法选项总结——P3419R0 (2024-10-11)
  • 模板的反射——P3420R1 (2025-01-13)
  • 反射标头应当最小化标准库依赖——P3429R1 (2024-11-29)
  • 反射与元编程——P3435R0 (2024-10-14)
  • 默认原则的建议:反射 C++,生成 C++——P3437R1 (2024-11-07)
  • SG21 反射的 2024 进度——P3443R0 (2024-10-14)
  • 针对反射访问控制的建议——P3451R0 (2024-10-15)
  • 对反射与访问的深思——P3493R0 (2024-11-10)
  • 反射对访问控制的建模——P3547R1 (2025-02-09)
  • 反射中的错误处理——P3560R0 (2025-01-12)
  • 拆分反射中的 define_aggregate——P3569R0 (2025-01-11)
  • 重新考虑 C++26 的反射访问——P3587R0 (2025-01-13)
  • 不要移除或延后 access_context::unchecked——P3614R0 (2025-02-06)
  • std::exception 继承 std::meta::exception——P3637R0 (2025-03-08)
反射 (实验性)
2D 图形 早期开发。草案 P0267R10 (2019-10-07)。
图库 早期开发。
更多提案:
  • 图库:概述——P3126R3 (2025-04-13)
  • 图库:算法——P3128R3 (2025-04-13)
  • 图库:图容器接口——P3130R3 (2025-04-13)
  • 图库:图容器——P3131R3 (2025-04-13)
统计 早期开发。
更多提案:
剖面配置 早期开发。
更多提案:
  • 安全性剖面配置:ISO 标准 C++ 中的类型与资源安全编程——P2816R0 (2023-02-16)
  • 对初始各项剖面配置的具体建议——P3038R0 (2023-12-16)
  • 核心安全性剖面配置:规范,可采纳性与影响——P3081R2 (2025-02-03)
  • 一种剖面配置开发框架——P3274R0 (2024-05-10)
  • 一种验证类初始化的安全性剖面配置——P3402R1 (2024-10-15)
  • 剖面配置验证:消除悬挂指针——P3446R0 (2024-10-14)
  • 剖面配置语法——P3447R0 (2024-10-14)
  • 对核心安全性剖面配置(P3081R0)的回应——P3543R0 (2024-12-17)
  • 剖面配置问题过剩——P3586R0 (2025-01-13)
  • C++ 剖面配置:框架——P3589R1 (2025-02-03)
  • 契约与剖面配置:C++26 应当合理提供什么——P3608R0 (2025-02-01)
  • 处理指针错误:区分静态和动态检查——P3611R0 (2025-02-04)
  • 易于采纳的用于防止现存 C++ 代码中 RCE(远程代码执行)的安全性剖面配置——P3627R0 (2025-02-11)
  • 二十一世纪的 C++ - P3650R0 (2025-03-05)
  • 对 C++ 标准委员会成员的提醒——P3651R0 (2025-03-06)

[编辑] 参阅

实验性 C 特性C 文档

[编辑] 外部链接

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