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].
另见
[编辑]| 这是一篇關於電腦程式語言的小作品。您可以通过编辑或修订扩充其内容。 |