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
使 ()lambda 更可选 P1102R2 11 13
if consteval P1938R3 12 14
移除垃圾收集支持 P2186R2 12
DR:C++ 标识符语法使用 Unicode 标准附录 31 P1949R7 12 14
DR:允许重复属性 P2156R1 11 13
static_assertconstexpr if 中的窄化按语境转换 P1401R5 9 13 (部分)*
14
在拼接行前剔除空白符 P2223R2
使声明顺序布局强制 P1847R4
移除混合宽字符串字面量连接 P2201R1
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
<stdatomic.h> P0943R6
std::is_scoped_enum P1048R1 11 12 19.30*
basic_string/basic_string_viewcontains() P1679R3 11 12
std::to_underlying P1682R3 11 13
std::variant 的派生类的 std::visit P2162R2 13 19.20**
放松 time_point<>::clock 的要求 P2212R2 N/A N/A
DR:条件性借用范围 P2017R1 19.30*
DR:修复输入范围适配器std::counted_iterator P2259R1
在分配器接口中提供大小反馈 P0401R6
<spanstream> :以 std::span 为基础的字符串流 P0448R4
std::out_ptr()std::inout_ptr() P1132R8
constexpr type_info::operator==() P1328R1
std::stackstd::queue 的迭代器对构造函数 P1425R4
容器推导指引中分配器的非推导语境 P1518R2
ranges::starts_with()ranges::ends_with() P1659R3 11
禁止 basic_stringbasic_string_viewnullptr 构造 P2166R1
std::invoke_r() P2136R3
basic_string_view 的范围构造函数 P1989R2
pair 的转发构造函数的默认模板实参 P1951R1
移除垃圾收集与基于可达性的泄漏检测(库支持 P2186R2
DR:join_view 应结合所有范围 P2328R1
DR:view 不要求 default_initializable P2325R3
DR:范围适配器对象按值绑定实参 P2281R1 19.29 (16.10)*
DR:std::optionalstd::variantconstexpr P2231R1
DR:std::format() 改进 P2216R3
DR:lazy_split_view 与重新设计的 split_view P2210R2
C++23 功能特性
 
提案
 
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang
Sun/Oracle C++
标准库
Embarcadero C++ Builder
标准库
Cray C++
标准库

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