C++23 的编译器支持
来自cppreference.com
                    
                                        
                    < cpp | compiler support
                    
                                                            
                    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_assert 与 constexpr 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_view 的 contains() | 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::stack 与 std::queue 的迭代器对构造函数 | P1425R4 | 12 | 14 | 19.31* | |||||
| 容器推导指引中分配器的非推导语境 | P1518R2 | 12 | 13 | 19.31* | 13.1.6* | ||||
| ranges::starts_with() 与 ranges::ends_with() | P1659R3 | 11 | |||||||
| 禁止 basic_string 与 basic_string_view 从 nullptr 构造 | 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::optional 与 std::variant 的 constexpr | 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::zip、 views::zip_transform、 views::adjacent 及 views::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* | |||||
| 要求 span 与 basic_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_storage 与 std::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::iota、 ranges::shift_left 及 ranges::shift_right | P2440R1 | 19.34* | |||||||
| views::join_with | P2441R2 | 19.34* | |||||||
| views::chunk 与 views::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++ 标准库 |