跳转到内容

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::bitsetstd::string_view 接口对接。
  • <cmath><complex> 提供更多的 constexpr 支持。
  • 在比率(ratios)中添加新的 2022 年 SI 前缀:std::quectostd::rontostd::ronnastd::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_satstd::div_sat 等。

注释

[编辑]
  1. ^ Working Draft, Standard for Programming Language C++ (PDF). Open Standards. ISO/IEC. 2024-04-16. 
  2. ^ P3176R1: 牛津可变逗号. eisenwave.github.io. [2024-12-09]. 
  3. ^ 契约断言(自 C++26 起)- cppreference.com. en.cppreference.com. [2025-03-09]. 

另见

[编辑]