C++23

来自cppreference.com
< cpp

下一代C++标准

新的语言特性

新的库特性

缺陷报告

编译器支持情况

主条目: C++ 编译器支持

C++23 核心语言功能特性

C++23 功能特性
 
提案
 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Nvidia HPC C++
(前 Portland Group/PGI)
Nvidia nvcc
(有符号) size_t字面量后缀 P0330R8 11 13

13.1.6*

使更多的 ()lambda 可以被省略 P1102R2 11 13

13.1.6*

6.3
if consteval P1938R3 12 14 6.3
移除垃圾收集支持 P2186R2 12
DR:C++ 标识符语法使用 Unicode 标准附录 31 P1949R7 12 14 6.4
DR:允许重复属性 P2156R1 11 13

13.1.6*

static_assertconstexpr if 中的窄化按语境转换 P1401R5 9 13 (部分)*
14

13.1.6* (部分)

在拼接行前剔除空白符 P2223R2
使声明顺序布局强制 P1847R4
移除混合宽字符串字面量连接 P2201R1
推导 this P0847R7 19.32*
(部分)*
6.3
auto(x)auto{x} P0849R8 12 15
更改 lambda 尾随返回类型的作用域 P2036R3 15
#elifdef#elifndef P2334R1 12 13

13.1.6*

constexpr 函数中的非字面类型变量(以及句标与 goto P2242R3 12 15 6.3
一致的字符字面量编码 P2316R2
字符集与编码 P2314R4
扩展初始化语句以允许别名声明 P2360R0 12 14
多维数组下标运算符 P2128R6 12 15
Lambda 上的属性 P2173R1 9 13

13.1.6*

DR:调整功能特性测试宏 __cpp_concepts 的值 P2493R0 12 19.32* 6.4
C++23 功能特性
 
提案
 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Nvidia HPC C++
Nvidia nvcc

C++23 库功能特性

C++23 功能特性
 
提案
 
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang
Sun/Oracle C++
标准库
Embarcadero C++ Builder
标准库
Cray C++
标准库
栈踪库 P0881R7 12 (部分)* 19.34*
<stdatomic.h> P0943R6 12 15 19.31*
std::is_scoped_enum P1048R1 11 12 19.30*

13.0.0*

basic_string/basic_string_viewcontains() P1679R3 11 12
std::to_underlying P1682R3 11 13 19.30*

13.1.6*

放松 time_point<>::clock 的要求 P2212R2 N/A N/A
DR: std::variant 的派生类的 std::visit P2162R2 11.3 13 19.20**
19.30*

13.1.6*

DR:条件性借用范围 P2017R1 11 19.30*
DR:修复输入范围适配器std::counted_iterator P2259R1 12 19.30*(部分)*
19.31*
在分配器接口中提供大小反馈 P0401R6 15 19.30*
<spanstream> :以 std::span 为基础的字符串流 P0448R4 12 19.31*
std::out_ptr()std::inout_ptr() P1132R8 19.30*
constexpr type_info::operator==() P1328R1 12 19.33*
std::stackstd::queue 的迭代器对构造函数 P1425R4 12 14 19.31*
容器推导指引中分配器的非推导语境 P1518R2 12 13 19.31*

13.1.6*

ranges::starts_with()ranges::ends_with() P1659R3 11
禁止 basic_stringbasic_string_viewnullptr 构造 P2166R1 12 13 19.30*

13.1.6*

std::invoke_r() P2136R3 12 19.31*
basic_string_view 的范围构造函数 P1989R2 11 14 19.30*
pair 的转发构造函数的默认模板实参 P1951R1 14 19.30*
移除垃圾收集与基于可达性的泄漏检测(库支持 P2186R2 12 14 19.30*
DR:join_view 应结合所有范围 P2328R1 11.2 19.30*
DR:view 不要求 default_initializable P2325R3 11.3 19.30*
DR:范围适配器对象按值绑定实参 P2281R1 11 19.29 (16.10)*
(部分)*
19.31*
DR:std::optionalstd::variantconstexpr P2231R1 11.3 (部分)*
12
13 (部分)* 19.31*

13.1.6* (部分)

DR:std::format() 改进 P2216R3 14 (部分)* 19.32*
DR:lazy_split_view 与重新设计的 split_view P2210R2 12 19.31*
zip: views::zipviews::zip_transformviews::adjacentviews::adjacent_transform P2321R2 15 (部分)* 19.33* (部分)*
关联容器的异质擦除重载 P2077R3 19.32*
std::byteswap() P1272R4 12 14 19.31*
打印 volatile T* P1147R1 11.3 14 19.31*
basic_string::resize_and_overwrite() P1072R10 12 14 19.31*
std::optional 的单子操作 P0798R8 12 14 19.32*
std::move_only_function P0288R9 12 19.32*
添加条件性 noexcept 说明到 std::exchange P2401R0 12 14 19.25*
要求 spanbasic_string_view可平凡复制 (TriviallyCopyable) P2251R1
澄清“C 头文件”的状况 P2340R1
DR:修复 views::istream P2432R1 12 19.31*
DR: 添加到不可 const 格式化类型的支持到 std::format P2418R2 19.32*
DR:带所有权的 view P2415R2 12 14 19.31*
DR:修复 chrono 格式化器中的本地环境支持 P2372R3 19.31*
DR:清理整数类类型 P2393R1 19.32*
<expected> P0323R12 12 19.33*
<cmath><cstdlib> 的 constexpr P0533R9 4.6 (部分)*
std::unreachable() P0627R6 12 15 19.32*
弃用 std::aligned_storagestd::aligned_union P1413R3 19.33*
std::reference_constructs_from_temporary & std::reference_converts_from_temporary P2255R2
constexpr std::unique_ptr P2273R3 12 19.33*
ranges::to P1206R7
用户定义适配器范围的管道支持 P2387R3
ranges::iotaranges::shift_leftranges::shift_right P2440R1 19.34*
views::join_with P2441R2 19.34*
views::chunkviews::slide P2442R1 19.33*
views::chunk_by P2443R1 19.33*
C++23 功能特性
 
提案
 
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang
Sun/Oracle C++
标准库
Embarcadero C++ Builder
标准库
Cray C++
标准库

* - 在版本号上停留可以查看注记