Namespaces
Variants

C++26

来自 zh.cppreference.net
< cpp

C++ 标准的下一代。

当前 C++26 的 IS 时间表: P1000R6 (2024-05-14)。

新语言特性

新库特性

新增模块

新增头文件

C 兼容性头文件:

已弃用功能

已移除功能

已弃用功能

缺陷报告

编译器支持

主要文章: C++26 编译器支持

C++26 核心语言特性

C++26 特性

 
提案

 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
DR98: 从词法分析中移除未定义行为 P2621R3 是 3.3 16.0.0*
DR98: 使不可编码字符串字面量变为非良构 P1854R4 14 14 16.0.0*
未求值字符串 P2361R6 14 17 (部分)*
18
16.0.0*
将 @、$ 和 ` 添加到 基本字符集 P2558R2 15 是 16.0.0*
constexpr 强制转换从 void*  (FTM)* P2738R1 14 17
DR20: 关于标准属性的可忽略性 P2552R3 15 是
DR11: 花括号初始化器的静态存储 P2752R3 14
用户生成的 static_assert 消息  (FTM)* P2741R3 14 17
无名称占位变量  (FTM)* P2169R4 14 18
包索引  (FTM)* P2662R3 15 19
移除枚举弃用的算术转换 P2864R2 14 18
DR11/20: 模板参数初始化 P2308R1 9 18
禁止将返回的引用绑定到 临时对象 P2748R5 14 19
对 结构化绑定  的属性 (FTM) * P0609R3 15
未初始化读取 的错误行为,[[indeterminate]] 属性 P2795R5
P3684R1
16
= delete("reason");  (FTM)* P2573R2 15 19
可变参数 友元  (FTM)* P2893R3 15 20
DR98: 澄清聚合初始化中花括号省略的规则聚合初始化 P3106R1 是 17
DR20: 禁止模块声明成为宏 P3034R1 15
DR11: 平凡无限循环不是未定义行为 P2809R3 14 19
constexpr placement new  (FTM)* P2747R2 15 20
结构化绑定声明作为条件  (FTM)* P0963R3 15 6 (部分)*
21
涉及 约束 和 折叠表达式  的排序 (FTM) * P2963R3
19 删除 指向不完整类型的指针应为非良构 P3144R2 15 19
6.7 结构化绑定可以引入  包 (FTM) * P1061R10 16
21 constexpr 结构化绑定 以及对 constexpr 变量的引用 P2686R516 *22 (部分) *
6.7 constexpr  异常 (FTM) * P3068R6
16 牛津可变参数逗号 P3176R1 15
20 移除弃用的数组比较 P2865R6 15
#embed 20 (FTM) * P1967R14 15 19
* 概念和变量模板的模板参数 (FTM) * P2841R722 (部分)
* 平凡联合体 (FTM) *
P3074R7
P3726R2 可观察检查点 P1494R5
16  契约 (FTM) * P2900R14
16  反射 (FTM) *
P2996R13
P3096R12
P3293R3
P3394R4
P3795R216
* 展开语句 (FTM) * P1306R5
16  constexpr 虚继承 (FTM) * P3533R2
16 诊断预处理器错误 P2843R3
16 允许将 main 附加到全局模块 P3618R0
16 #lineDR20: 允许在模块声明前使用 export
P3868R1 DR17: 类型模板模板参数的类模板实参推导
P3865R3 契约断言中拼接表达式的常量化
 

P3598R0
 

C++26 特性
提案
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

C++26库特性

C++26特性

 
提案

 
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
对<charconv>函数成功或失败的测试  (FTM)* P2497R0 14 18 16.0.0*
std::text_encoding:文本编码标识  (FTM)* P1885R12
P2862R1
14
std::to_string和std::to_wstring的算术重载使用std::format  (FTM)* P2587R3 14
格式参数的类型检查  (FTM)* P2757R3 15
指针格式化  (FTM)* P2510R3 14* 17* 19.40**
对std::chrono值类的哈希支持 ( FTM)*P2592R3 16
<rcu>:读-复制更新 ( FTM)*P2545R4
<hazard_pointer>:风险指针 ( FTM)*P2530R3 ADL安全的
std::projectedP2538R1 14 *18 *19.38* *16.0.0* 常量表达式稳定排序
( FTM)*P2562R1 15 21
成员std::basic_format_arg::visit()  (FTM)* P2637R3 15 19
成员std::variant::visit()  (FTM)* P2637R3 15 18
std::is_within_lifetime  (FTM)* P2641R4
P3450R1
22 (部分)*
用剩余异构重载扩展关联容器  (FTM)* P2363R5 16
允许将std::weak_ptr用作无序关联容器的键  (FTM)* P1901R2 16
文件流中的原生句柄  (FTM)* P1759R6 14 18 16.0.0*
字符串流与std::string_view 的接口 (FTM) * P2495R3 16
19 std::bitset与 std::string_view的接口 (FTM ) * P2697R1 16
18 constexpr16.0.0*<为>cmath<和> complex添加更多 (FTM ) (FTM)** P1383R2 4.6 (部分)*
在比值上添加新的2022年SI词头:std::quecto、std::ronto、std::ronna和std::quetta  (FTM)* P2734R0 14 17*
std::function_ref:类型擦除可调用引用  (FTM)* P0792R14
P3961R1
16
std::copyable_function  (FTM)* P2548R6 16
std::bind_front、std::bind_back和std::not_fn到NTTP可调用对象
  (FTM)*  (FTM)*  (FTM)*
P2714R1 16
std::submdspan()  (FTM)* P2630R4
P3355R1
P3663R3
P3982R2
16
独立语言:可选::operator new P2013R5 19.38*
独立std::char_traits、std::errc以及以下工具:<charconv>、<cstdlib>、<cstring>、<cwchar>  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)* P2338R4 19.38*
更多独立工具
  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*
P2198R7 19.38*
饱和运算  (FTM)* P0543R3
P4052R0
14
16*
18 16.0.0*
<调试>:调试支持 ( FTM)*P2546R5 P2810R4
16
*linalg
<:基于BLAS的自由函数线性代数接口> ( FTM)*P1673R13 P3050R2
P3222R0
P3371R5
使
assert()宏更易用P2264R7 是 *动态格式字符串
( FTM)*P2918R2 P3953R3
14
*16
*18
16.0.0* std::span::at()
( FTM)*P2821R5 14 18 16.0.0* 为
std::complex添加元组协议  (FTM)* P2819R2 15 19
std::generate_canonical 的新规范P0952R2 16 19.42*
移除已弃用的类型定义std::allocator::is_always_equal P2868R3 15 18 16.0.0*
移除不带参数的std::basic_string::reserve()函数重载 P2870R3 18 16.0.0*
移除已弃用的Unicode转换facets (<codecvt>) P2871R3 18 16.0.0*
独立:移除std::strtok  (FTM)* P2937R0 14 19.40*
独立库:部分类  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)* P2407R5 14 19.42*
独立库:std::inout、std::expected、std::span
  (FTM)*  (FTM)*  (FTM)*  (FTM)*
P2833R2 14 19.42*
DR23: std::basic_const_iterator应遵循其底层类型的可转换性  (FTM)* P2836R1
P2950R0
14 19.40*
DR20: std::make_format_args现在只接受左值引用而非转发引用 P2905R2 14 18 19.40* 16.0.0*
DR20: 修复将代码单元格式化为整数的问题  (FTM)* P2909R4 13.3 18 19.40* 16.0.0*
views::concat  (FTM)* P2542R8 15
字符串和字符串视图 的拼接 (FTM) * P2591R5 15
19 为 算法启用列表初始化 (FTM )
*
P2248R8
P3217R0
P3787R2 15 std::ranges::generate_random (FTM )
*P1068R11对std::reference_wrapper的比较,以及对std::pair、std::tuple、std::optional和 std::variant比较的约束 (FTM )* (FTM ) * P2944R3
14 22
19 (部分) *填充的mdspan布局 (FTM ) *
P2642R616 带有整型常量的std::span和 std::mdspan 的新CTAD P3029R1
16  19 原子最大值和最小值 (FTM ) *
P0493R5<16 > std::formatterstd::filesystem::path ( FTM )
*P2845R8 16 使用std::println()打印空行 ( FTM) *P3142R0 14*
19* 19.41* *取消弃用 std::polymorphic_allocator::destroy P2875R4
14.3 * 15
19.41*移除弃用的strstreamsP2867R2 19
移除弃用的std::shared_ptr 原子访问API P2869R4
移除std::wstring_convert P2872R319 DR23: 允许高效的std::print 实现
(
FTM )
*P3107R5 P3235R316 19.43*常量表达式 placement new ( FTM
) *P2747R215 20 执行控制库
(
FTM
)
*
P2300R10
P3388R3
P3396R1
P3433R1P3481R5P3570R2 P3682R0
P3887R1
附加
执行控制库
修复
P3373R4P3826R5 P3986R1P4154R0P4159R0std::inplace_vector :动态可调整大小但容量固定的向量
(
FTM
)
*P0843R14 P3981R2P4022R016 std::philox_engine :基于计数器的随机数引擎 (
FTM) *P2075R616 std::optional 范围支持
(
FTM )
*P3168R2 P3913R116 22 (部分)*std::is_virtual_base_of :检测虚基类的类型特性 ( FTM
)*P2985R0 15 20 std::dims 用于 std::mdspan (
FTM) * P2389R2 16 19
DR11:  std::ignore类型的正式规范P2968R215 19 19.42* DR20: 从间接可调用概念中移除公共引用要求 (
FTM)*P2997R1 15 19 19.42*
弃用 std::is_trivial 和 std::is_trivial_v P3247R2 15
21  DR20: 算法函数对象P3136R1是是 19.39* 是
std::ranges::cache_latest_view ( FTM )*P3138R515 约束 std::expected 相等运算符
(FTM)* P3379R015 22 std::aligned_accessor :一种表达指针过对齐的 std::mdspan
访问器 ( FTM)*P2897R7 16 std::is_sufficiently_aligned
:检查指针的对齐前置条件  (FTM)* P2897R7
16
std::atomic_ref::address() (
FTM)*P2835R7 P3936R1 16 (部分)* 22 (部分)*
DR11/20: cv限定类型在std::atomic和std::atomic_ref 中P3323R116 19.44* 常量表达式
std::atomic和 std::atomic_ref (FTM) *
P3309R3
常量表达式
<专用内存算法> (<FTM> )*P3508R0P3369R0 15 stdbit.h和stdckdint.h ( FTM)
*
< (>FTM) *P3370R115* 16
simd
:数据并行类型
(
FTM
)
*
P1928R15
P3430R3P2876R3
P3691R1 P3922R1
P3690R1
P3932R0P4012R1 16 (部分)
*SIMD数学运算P1928R15P3844R4创建 执行环境的工具P3325R5常量表达式异常类型,例如 std::bad_alloc
、
std::bad_cast
等
( FTM )
* P3068R6P3378R2P3842R216 std::simd::chunk
P3441R216 SIMD位运算 ( FTM)*P2933R4 交错
std::complexstd::memory_order::consume 值在
std::simd中的支持 (<FTM> ) * P2663R7 解除能力并弃用
P3475R1 将std::monostate放入utility P0472R3 15
21  19.50*std::indirect (FTM ) *
P3019R14
 16 std::polymorphic (FTM )*P3019R1416  更多常量表达式容器和适配器 (FTM) * (FTM) * (FTM) * (FTM) * (FTM) * (FTM) * (FTM) * (FTM) * (FTM)
* P3372R316 (部分) *
21 (部分)*
22 (部分)*非平凡类型的常量表达式std::inplace_vector  (FTM)* P3074R7
std::ranges::as_input_view  (FTM)* P3137R3
P3828R1
15*
16*
std::ranges::approximately_sized_range和std::ranges::reserve_hint  (FTM)* P2846R6
<hive>:一种基于桶的容器,复用已擦除元素的内存位置  (FTM)* P0447R28
对可观察检查点的库支持  (FTM)* P1494R5
P3641R0
16
<契约>:违约处理支持  (FTM)* P2900R14
P3819R0
16
标准库强化 P3471R4
P3697R1
P3878R1
15 (部分)* 19.44* (部分)* 19.50* (部分)*
独立库:<algorithm>、<execution>、<memory>、<numeric>
和<random>  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*
P2976R1
DR20: 将连续迭代器转换为指针 P3349R0 15 19.51*
<meta>:反射库支持  (FTM)* P2996R13
P3394R4
P3293R3
P3096R12
P3795R2
P4156R0
16 (部分)*
常量表达式异常作为反射中的错误处理  (FTM)* P3560R2 16
std::define_static_object、std::define_static_array、std::define_static_string  (FTM)* P3491R3 16
std::simd::basic_vec和std::simd::basic_mask是范围类型 P3480R6 16
std::optional<T&>  (FTM)*  (FTM)* P2988R12
P3836R2
16 22
std::string::subview()和std::string_view::subview()  (FTM)* P3044R2 16 22
常量表达式std::shared_ptr及其友元  (FTM)* P3037R6
协程任务类型  (FTM)* P3552R3
P3980R1
P3927R2
P3941R4
P4151R1
异步作用域:为非顺序并发创建作用域  (FTM)* P3149R11
P3815R1
并行调度器  (FTM)* P2079R10
P3804R2
使用常量表达式异常的高质量sender诊断 P3557R3
execution::write_env和execution::unstoppable sender适配器 P3284R4
std::views::indices  (FTM)* P3060R3 16
并行范围算法  (FTM)* P3179R9
P3709R2
原子浮点最小/最大  (FTM)* P3008R6
原子归约操作  (FTM)* P3111R8
SIMD置换操作  (FTM)* P2664R11
std::mdspan::at() P3383R3 16
std::exception_ptr_cast()  (FTM)* P2927R3
P3748R0
P3981R2
16 (部分)*
标准化常量表达式类型排序  (FTM)* P2830R10
P3778R0
P4140R0
16
std::constant_wrapper  (FTM)* P2781R9
P3978R3
16 23
std::apply变更:std::apply_result、std::is_applicable和std::is_nothrow_applicable  (FTM)* P1317R2
使std::promise和std::packaged_task中的类型擦除分配器使用一致 P3503R3 17 19.51*
std::filesystem::path::display_string()和std::filesystem::path::native_encoded_string()  (FTM)* P2319R5
使std::istream::ignore()不那么令人惊讶 P3223R2 16 19.50*
DR11: 解决std::valarray和std::initializer_list 中begin/end的不一致 (FTM) * (FTM) * P3016R6
19.51*std::flat_meow 修复 (FTM) * (FTM) * P3567R2 22
19.51*使std::integer_sequence 可用于结构化绑定和展开语句 (FTM) * P1789R3 16
22  常量表达式文本格式化 (FTM) *
P3391R2 std::start_lifetime (FTM) *
P3726R2std::is_structural:检测结构类型的类型特性  (FTM)* P3856R8 16
std::constant_wrapper用作std::function_ref构造函数参数 P3948R1 16
在随机数生成中支持signed char和unsigned char P4037R1
使用特性宏检测契约违约处理器的实现定义可替换性

( FTM)*P3886R0

16 DR20: 使视图迭代器/哨兵的用户定义构造函数私有
P3059R2 是 DR20: 过滤视图扩展以更安全使用
( FTM)*P3725R3 16 C++26特性
 

提案
 

GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
*

- 将鼠标悬停在带星号 * 的单元格上可查看更多弹出注释。 DR
nn - "DR"后的数字 nn 表示缺陷报告所应用的目标C++修订版,例如DR20 C++20。 →

外部链接

1. C++26 - 维基百科