# C++23

< 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_assert` 与 constexpr 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_view` 的 `contains()` | 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::stack 与 std::queue 的迭代器对构造函数 | P1425R4 |  |  |  |  |  |  |
容器推导指引中分配器的非推导语境 | P1518R2 |  |  |  |  |  |  |
`ranges::starts_with()` 与 `ranges::ends_with()` | P1659R3 | 11 |  |  |  |  |  |
禁止 `basic_string` 与 `basic_string_view` 从 `nullptr` 构造 | 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::optional 与 std::variant 的 `constexpr` | 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++ 标准库

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