跳至內容

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]. 

另見

[編輯]