C++26
外观

C++26是继C++23之后正在修订中的C++编程语言开放标准草案,其正式版本预计将于2026年发布。目前已发布的修订草案为N4981。[1]
特性
[编辑]已被C++26接受的新特性包括:
语言特性
[编辑]- 未求值字符串(Unevaluated strings)。
- 将
@
、$
和`
添加到基本字符集。 - 支持从
void*
进行constexpr
转换。 - 用户自定义的
static_assert
消息。 - 无命名的占位变量(Placeholder variables)。
- 包索引(Pack indexing)。
- 结构化绑定(structured bindings)的属性(Attributes)。
- 未初始化读取的错误行为。
= delete("reason");
(可以为删除函数提供删除原因)。- 可变参数友元(Variadic friends)。
constexpr
放置new
表达式。- 将结构化绑定声明作为条件使用。
- 折叠表达式(fold expressions)中约束(constraints)的排序。
- 删除指向不完整类型(incomplete type)指针应该是格式错误(ill-formed)的。
- 结构化绑定可以引入参数包(pack)。
- 常量求值(constant-evaluation)中允许抛出异常。
constexpr
结构化绑定与对constexpr
变量的引用。- 牛津可变逗号(Oxford variadic comma),即“弃用前无逗号的省略号参数。语法
(int...)
与 C 语言不兼容,对 C++ 也有害,可以很容易用(int, ...)
替代。”[2] - 移除弃用的数组比较。
- 契约[3]
标准库特性
[编辑]- 为
std::chrono
值类增加哈希支持。 std::is_within_lifetime
类型检测。- 文件流(file streams)中的原生句柄(Native handles)支持。
- 将字符串流(string streams)与
std::string_view
接口对接。 - 将
std::bitset
与std::string_view
接口对接。 <cmath>
与<complex>
提供更多的constexpr
支持。- 在比率(ratios)中添加新的 2022 年 SI 前缀:
std::quecto
、std::ronto
、std::ronna
和std::quetta
。 std::copyable_function
。std::submdspan()
。<debugging>
:调试支持模块。<linalg>
:基于 BLAS 的自由函数线性代数接口。- 向
std::complex
添加元组协议(tuple protocol)。 views::concat
。- 字符串与字符串视图的拼接。
std::ranges::generate_random
。- 使用
std::println()
打印空白行。 std::formatter<std::filesystem::path>
格式化器。- 支持饱和算术(Saturation arithmetic),包括
std::add_sat
、std::div_sat
等。
注释
[编辑]- ^ Working Draft, Standard for Programming Language C++ (PDF). Open Standards. ISO/IEC. 2024-04-16.
- ^ P3176R1: 牛津可变逗号. eisenwave.github.io. [2024-12-09].
- ^ 契约断言(自 C++26 起)- cppreference.com. en.cppreference.com. [2025-03-09].
另见
[编辑]![]() | 这是一篇關於電腦程式語言的小作品。您可以通过编辑或修订扩充其内容。 |