Namespaces
Variants

Experimental C++ Features

From cppreference.net

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年6月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)。
可能被未来的技术规范取代或并入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 事务性内存技术规范 发布于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 ( ISO 商店 )。最终草案: 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 范围技术规范 发布于2017年12月5日( ISO商店 )。草案: N4685 (2017年7月31日)。

已并入C++20

范围 (实验性), 范围 <ranges>
ISO/IEC TS 22277:2017 协程技术规范 发布于2017年12月5日( ISO商店 )。草案版本: N4736 (2018年3月31日)。最新草案: N4775 (2018年10月7日)。

已并入C++20

<coroutine>
ISO/IEC TS 19216:2018 网络技术规范 发布于2018年4月24日( ISO商店 )。草案: N4734 (2017年4月4日)。最新草案: N4771 (2018年10月8日)。
另见非技术规范提案
  • 标准安全网络 - P2586R0 (2022年9月13日)
  • 网络通信的发送者-接收者接口 - P2762R2 (2023年10月12日)
  • 基于 IETF TAPS 的C++标准网络发展方向提案 - P3185R0 (2024年12月14日)
  • 创建基于TAPS的网络连接的拟议API - P3482R0 (2024年12月14日)
网络
ISO/IEC TS 21544:2018 模块技术规范 发布于2018-05-16 ( ISO商店 ). 最终草案: N4720 (2018-01-29).

已并入C++20 .

ISO/IEC TS 19570:2018 并行性技术规范版本 2 发布于 2018-11-15 ( ISO 商店 )。最终草案: N4793 (2018-11-26)。发布后草案: N4808 (2019-03-11)。另见非技术规范 std::simd 提案 下方 并行性 2
ISO/IEC TS 23619:2021 反射技术规范 发布于2021年10月11日( ISO商店 )。草案版本: N4856 (2020年3月2日)。另见非技术规范提案 下方 反射
Numerics 早期开发阶段。草案: P1889R1 (2019-12-27)。
ISO/IEC TS 9922 并发技术规范版本 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 事务性内存技术规范 第2版 早期开发阶段。草案: N4923 (2022-10-14)。
ISO/IEC NP 19569 数组扩展技术规范 × 已撤回。废弃草案: N3820 (2013-10-10)。

非技术规范提案

名称 状态 链接与头文件
线性代数 已并入 C++26 。提案: P1673R13 (2023-11-10)。
更多提案:
<linalg>
std::execution 已并入 C++26 。提案: P2300R10 (2024-06-28)。
更多提案:
  • 系统执行上下文 - P2079R8 (2025-05-18)
  • 网络通信的发送者-接收者接口 - 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)
  • 改进发送者表达式的诊断信息 - P3164R4 (2025-04-28)
  • 重新审视 std :: execution :: on 算法 - P3175R3 (2024-06-25)
  • 用于完成行为的发送者查询 - P3206R0 (2025-01-13)
  • finally write_env unstoppable 发送者适配器 - P3284R4 (2025-05-16)
  • 修复惰性发送者算法定制 - 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)
  • 使用常量表达式异常实现高质量发送者诊断 - P3557R2 (2025-05-16)
  • 发送者-接收者中的可选变体 - P3570R1 (2025-05-19)
  • std::execution 提供非阻塞支持 - P3669R1 (2025-05-17)
  • 移除 std::execution::split 功能 - P3682R0 (2025-05-06)
  • 重命名 async_scope_token 标识符 - P3685R0 (2025-05-07)
  • 重命名 async_scope 提案中的 join nest 方法 - P3706R0 (2025-05-19)
执行器 (实验性功能),
执行器
<execution>
std:: inplace_vector 已并入 C++26 。提案: P0843R14 (2024-06-26)。
更多提案:
  • inplace_vector - P0843 ( R7 ) LEWG 演示 - P2925R0 (2023-06-16)
  • Vector 的发展方向 - P3147R1 (2024-03-18)
  • 支持分配器的 std::inplace_vector - P3160R2 (2024-10-15)
  • 不,inplace_vector 不应包含分配器 - P3581R0 (2025-01-13)
  • LEWG 哈根贝格会议关于 P3581 的演示。不,inplace_vector 不应包含分配器 - P3636R0 (2025-02-13)
  • std::inplace_vector 的跨容量比较 - P3698R0 (2025-05-19)
<inplace_vector>
experimental::simd
std::datapar::simd
已并入 C++26 。提案: P1928R15 (2024-11-22)。
主文档(TS ISO/IEC 19570:2018)在 "C++ 并行性扩展 V2" 中有描述。
更多提案:
数据并行类型 (实验性),
数据并行类型
<simd>
合约 已并入 C++26 . Proposal: Contracts for C++ - P2900R14 (2025-02-13)
更多提案:
  • 关于发布合约技术规范的建议 - P2659R2 (2022-11-30)
  • 提案 Contracts TS - P2660R0 (2022-10-14)
  • 对Contracts 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)
  • 契约功能最小可行产品的设计理念 - P2817R0 (2023-03-05)
  • 支持常量定义式风格的合约提案 - 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)
  • 面向合约的开放式设计问题的原则性方法 - 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)
  • 从 Contracts MVP 中移除 evaluation_undefined_behavior will_continue 功能 - P3073R0 (2024-01-27)
  • 常量求值契约中是否应存在 ignore observe 函数? - P3079R0 (2024-01-11)
  • C++ 合约:对虚函数的支持 - P3097R0 (2024-04-15)
  • C++ 合约:后置条件捕获 - P3098R1 (2024-12-11)
  • 未定义行为和错误行为属于契约违反 - P3100R2 (2025-05-19)
  • Tokyo Technical Fixes to Contracts - P3119R1 (2024-05-09)
  • 虚函数契约的 Contracts MVP 提案 - P3165R0 (2024-02-27)
  • 继承契约 - P3169R0 (2024-04-14)
  • 契约测试支持 - P3183R1 (2024-05-22)
  • LEWG演示文稿幻灯片: P2900R6 :C++合约规范 - P3189R0 (2024-03-19)
  • LEWG会议演示文稿幻灯片: P2900R7 :C++合约规范 - P3190R0 (2024-03-20)
  • 对东京EWG关于Contracts MVP的投票回应 ( P2900R6 ) - P3197R0 (2024-04-12)
  • 东京 LEWG 会议关于 Contracts MVP 的要点总结 - 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)
  • 不要将合约作为技术规范发布 - P3269R0 (2024-05-21)
  • 关于 contract_assert 的重复、省略与常量化处理 - P3270R0 (2024-05-22)
  • 函数用法类型(函数指针契约) - P3271R1 (2024-10-15)
  • P2900 优于合约技术规范 - 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 对比 P2680 / P3285 - P3362R0 (2024-08-13)
  • 契约断言与静态分析及“安全性” - 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)
  • 常量化不应作为最小可行产品( M inimal V iable P roduct)的一部分 - P3478R0 (2024-10-16)
  • 探索严格契约谓词 - P3499R1 (2025-02-09)
  • 契约是否“安全”? - P3500R1 (2025-02-09)
  • P2900R11 幻灯片 - C++ 合约规范 - P3502R0 (2024-11-18)
  • P2900 仍未为 C++26 做好准备 - P3506R0 (2025-01-13)
  • 违规处理程序 vs 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)
  • C++26 标准库强化的小幅补充 - P3697R0 (2025-05-16)
契约断言 ,
函数契约说明符 ,
contract_assert ,
pre , post ,
<contracts>
反射 主文档(ISO/IEC TS 23619:2021)的描述见上文 Reflection TS
更多提案:
  • C++中的可扩展反射 - P1240R2 (2022-01-14)
  • 扩展语句 - P1306R4 (2025-05-17)
  • 属性反射 - P1887R1 (2020-01-13)
  • 元编程 - P2237R0 (2020-10-15)
  • 基于值的反射实现Python绑定 - P2911R1 (2023-10-13)
  • C++26反射特性 - P2996R12 (2025-05-17)
  • 使用反射替代生成JS绑定的元语言 - P3010R0 (2023-10-13)
  • 基于反射的ABI比较 - P3095R0 (2024-02-15)
  • C++26反射中的函数参数反射 - P3096R9 (2025-05-15)
  • 反射的生成式扩展 - P3157R1 (2024-05-22)
  • 反射语法设计 - P3381R0 (2024-09-17)
  • 属性反射机制 - P3385R5 (2025-05-19)
  • 反射注解支持 - P3394R3 (2025-05-17)
  • 反射语法方案总结 - 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)
  • 反射中的错误处理 - P3560R1 (2025-05-19)
  • 从反射中分离define_aggregate - P3569R0 (2025-01-11)
  • 重新考虑C++26的反射访问机制 - P3587R0 (2025-01-13)
  • 不应移除或推迟 access_context::unchecked 功能 - P3614R0 (2025-02-06)
  • std::meta::reflect_constant_ {array,string} 提案 - P3617R0 (2025-05-16)
  • std :: meta :: exception 继承自 std::exception - P3637R0 (2025-03-08)
  • C++26反射最终调整 - P3687R0 (2025-05-15)
反射 (实验性功能)
模式匹配 早期开发阶段。草案 P1371R3 (2020-09-15)。
更多提案:
  • 使用 is as 的模式匹配 - P2392R3 (2024-10-16)
  • 模式匹配: match 表达式 - P2688R5 (2025-01-13)
  • switch 用于模式匹配 - P2940R0 (2022-04-18)
  • 模式匹配标识符 - P2941R0 (2022-02-24)
  • 后置条件 is 即模式匹配 - P3210R2 (2024-09-10)
  • 引入新名称时模式匹配与合约的统一语法 - P3249R0 (2024-05-22)
  • 更简化的模式匹配表示法 - P3332R0 (2024-06-18)
  • P2688R2演示文稿 - 模式匹配: match 表达式 - P3476R0 (2024-10-16)
  • 模式匹配:开放和类型的定制点 - P3521R0 (2024-12-17)
  • 模式匹配:*variant-like* 与 'std::expected' - P3527R1 (2025-01-13)
  • 模式匹配 - P3572R0 (2025-01-12)
配置规范 早期开发阶段。
更多提案:
  • 安全配置规范:ISO标准C++中的类型与资源安全编程 - P2816R0 (2023-02-16)
  • 初始配置规范的具体建议 - P3038R0 (2023-12-16)
  • 核心安全配置规范:技术规格、可采纳性与影响评估 - P3081R2 (2025-02-03)
  • 配置规范开发框架 - P3274R0 (2024-05-10)
  • 验证类初始化的安全配置规范 - P3402R3 (2025-05-17)
  • 配置规范失效机制 - 消除悬垂指针 - P3446R0 (2024-10-14)
  • 配置规范语法 - P3447R0 (2024-10-14)
  • 对核心安全配置规范( P3081R0 )的回应 - P3543R0 (2024-12-17)
  • 配置规范面临的诸多问题 - P3586R0 (2025-01-13)
  • C++配置规范:框架设计 - P3589R2 (2025-05-19)
  • 合约与配置规范:C++26中可合理纳入的功能范围 - P3608R0 (2025-02-01)
  • 指针错误处理:静态检查与动态检查的分离 - P3611R0 (2025-02-04)
  • 适用于现有C++代码的易采纳安全配置规范:预防远程代码执行 - P3627R0 (2025-02-11)
  • 安全配置规范的原则性方法 - P3649R0 (2025-05-19)
  • 21世纪C++ - P3650R0 (2025-03-05)
  • 致C++标准委员会成员的说明 - P3651R0 (2025-03-06)
  • 推动安全C++落地 - P3700R0 (2025-05-19)
  • 什么是配置规范? - P3704R0 (2025-05-19)
统计信息 早期开发阶段。
更多提案:
图库 早期开发阶段。
更多提案:
2D图形 早期开发阶段。草案 P0267R10 (2019-10-07)。

另请参阅

C 文档 关于 实验性 C 特性

外部链接

1. PL22.16/WG21 文档列表 - 包含2016至2025年所有C++委员会文档(技术规范/提案)。
2. 2025年JTC1/SC22/WG21提案(邮件归档)